2011-11-20 39 views
11

Tôi có một danh sách các số mà tôi muốn đặt trong một cột trong tệp .csv. Mã bên dưới ghi các giá trị trên một hàng. Làm thế nào tôi có thể thay đổi mã để Python viết mỗi giá trị trên một hàng riêng biệt? Cảm ơn.Viết một danh sách Python vào một cột CSV đơn

 with open('returns.csv', 'wb') as f: 
      writer = csv.writer(f) 
      writer.writerow(daily_returns) 
+1

ISTM tệp CSV chỉ có cột không cần csv.writer. Chỉ cần sử dụng '' f.writelines ([ret + '\ n' cho ret trong daily_returns]) '' –

+2

@RaymondHettinger: Có lẽ điều này đã được tìm nạp, nhưng giá trị 'ret' có thể chứa' '\ n'' ký tự hoặc dấu phân cách sẽ cần trích dẫn. – unutbu

Trả lời

16
with open('returns.csv', 'wb') as f: 
    writer = csv.writer(f) 
    for val in daily_returns: 
     writer.writerow([val]) 
+3

Tôi nghĩ rằng cuộc gọi mở chỉ nên là 'mở (' returns.csv ',' w ') là f: ' – Casey

+0

Cảm ơn. Tôi đã thử cùng một mã, nhưng dòng cuối cùng của tôi đọc writer.writerow (val) và tôi đã nhận được lỗi "Trình tự mong đợi". Tôi không nhận ra mình cần dấu ngoặc. – johnjdc

+0

@Casey: Tôi có xu hướng đồng ý, nhưng kể từ khi OP viết nó, tôi cho rằng anh ấy biết những gì anh ta đang làm. – unutbu

0

Chỉ cần cho các hồ sơ:

Tôi đang sử dụng Python 3.2 và tôi chỉ có thể nhận được như sau để làm việc

with open('returns','w')as f: 
    writer=csv.writer(f,lineterminator='\n') 
    for val in returns: 
     writer.writerow([val]) 
+1

Trong Python 3, bạn nên mở tệp bằng tham số 'newline = ''', như được giải thích trong [tài liệu] (http://docs.python.org/3.2/library/csv.html#csv.writer). – DSM

2

giải pháp thay thế: daily_returns Giả sử là tên của danh sách bạn muốn viết dưới dạng cột trong tệp CSV, mã sau sẽ hoạt động:

with open('return.csv','w') as f: 
    writer = csv.writer(f); 
    writer.writerows(zip(daily_returns)); 
Các vấn đề liên quan