2009-05-14 70 views
8

Tôi cần phải viết một loạt ma trận cho một tệp văn bản thuần tuý từ python. Tất cả các ma trận của tôi đều có định dạng nổi nên đơn giản file.write() và file.writelines()Làm cách nào để viết danh sách nổi danh sách để ghi trong Python

không hoạt động. Có một phương pháp chuyển đổi tôi có thể sử dụng mà không có tôi looping thông qua tất cả các danh sách (ma trận = danh sách các danh sách trong trường hợp của tôi) chuyển đổi các giá trị cá nhân?

Tôi đoán tôi nên làm rõ, rằng nó không cần phải giống như một ma trận, chỉ là các giá trị liên quan trong một danh sách dễ phân tích cú pháp, như tôi sẽ được đọc sau. Tất cả trên một dòng thực sự có thể làm cho điều này dễ dàng hơn!

+0

Bạn có thể giải thích? Tại sao file.write() không hoạt động cho bạn? – JPCosta

Trả lời

10
m = [[1.1, 2.1, 3.1], [4.1, 5.1, 6.1], [7.1, 8.1, 9.1]] 
file.write(str(m)) 

Nếu bạn muốn kiểm soát nhiều hơn các định dạng của mỗi giá trị:

def format(value): 
    return "%.3f" % value 

formatted = [[format(v) for v in r] for r in m] 
file.write(str(formatted)) 
+0

str (m) tạo ra một cái gì đó khác nhau – SilentGhost

+0

khác với những gì? –

+0

Ồ, bạn đã viết giải pháp khác. Có, tùy thuộc vào cách định dạng đầu ra (được phân cách bằng dấu phẩy, v.v.), có thể yêu cầu xây dựng chuỗi thủ công. –

7

các công việc sau cho tôi:

with open(fname, 'w') as f: 
    f.writelines(','.join(str(j) for j in i) + '\n' for i in matrix) 
5

Tại sao không sử dụng pickle?

import cPickle as pickle 
pckl_file = file("test.pckl", "w") 
pickle.dump([1,2,3], pckl_file) 
pckl_file.close() 
1
import pickle 

# write object to file 
a = ['hello', 'world'] 
pickle.dump(a, open('delme.txt', 'wb')) 

# read object from file 
b = pickle.load(open('delme.txt', 'rb')) 
print b  # ['hello', 'world'] 

Tại thời điểm này bạn có thể nhìn vào các tập tin 'delme.txt' với vi

vi delme.txt 
    1 (lp0 
    2 S'hello' 
    3 p1 
    4 aS'world' 
    5 p2 
    6 a. 
1

cho dòng trong ma trận: file.write ("" .join (bản đồ (str, row)) + "\ n")

Điều này phù hợp với tôi ... và ghi kết quả ở định dạng ma trận

Các vấn đề liên quan