2010-07-12 72 views
2

我正在閱讀csv文件並將每行處理爲列表。最後,我想重新打印一個.csv文件,但這些行不一定是偶數。我顯然不能僅僅去"print row",因爲這會將它打印成列表。如何以.csv格式打印?將列表的元素打印到.csv文件

+0

你的數據結構是什麼樣的,它包含你想要打印的數據? – eruciform 2010-07-12 13:04:11

+0

它看起來像一堆字符串放在一起作爲一堆列表..例如,[3123,SomeString等] [14,morestuff等,AB12DE]等.. – ahhh 2010-07-12 13:06:20

回答

3

假設「行」包含字符串列表,你可以嘗試使用

print ",".join(row) 
7

閱讀說明書,有一個CSV作家方法(例如帶過)。不打印數據,保存它們,然後將它們寫入到CSV文件

http://docs.python.org/library/csv.html#csv.writer

+0

CSV模塊肯定是你的朋友在這裏。正是這個模塊讓我明白了Python哲學所包含的「電池」。 – 2010-07-12 14:10:09

-1

你所說的「行不一定是連」意思?您是使用自制的CSV解析器還是使用csv module

如果是前者,並沒有什麼特別的,你需要逃避,你可以嘗試像

print ",".join([ '"' + x.replace('"', '""') + '"' for x in row]) 

如果你不想「」 S周圍的每個領域,也許做一個函數喜歡escape_field()來檢查,如果它需要用雙引號包裝和/或轉義。

0

雖然它看起來像你的問題是更傾向於到CSV文件,而不是將它打印到標準輸出,這裏一個例子,做後者使用StringIO的:

import StringIO 
import csv 

a_list_from_csv_file = [['for', 'bar'], [1, 2]] 
out_fd = StringIO.StringIO() 
writer = csv.writer(out_fd, delimiter='|') 
for row in a_list_from_csv_file: 
    writer.writerow(row) 
print out_fd.getvalue() 

這樣你就可以使用您正在閱讀的csv使用的不同分隔符或轉義字符。