我有一个列表,我需要写一个.csv是的,我做了很多环顾四周(当然我发现this link接近目标,但错过了我的情况)你看{。{1}} .csv中的分隔符/格式设置存在各种问题( a 与 1 与 7 <>分开强>等等)
我的列表如下所示:
writerows
我可以看到它就像一个列表列表,所以我尝试buffer = [['a17', 'b17', 'c17', '8', 'e17', 'f17\n'], ['a24', 'b24', 'c24', '6', 'e24', 'f24\n'], ['a27', 'b27', 'c27', '9', 'e27', 'f27\n'], ['a18', 'b18', 'c18', '9', 'e18', 'f18\n'], ['a5', 'b5', 'c5', '5', 'e5', 'f5\n'], ['a20', 'b20', 'c20', '2', 'e20', 'f20\n'], ['a10', 'b10', 'c10', '1', 'e10', 'f10\n'], ['a3', 'b3', 'c3', '3', 'e3', 'f3\n'], ['a11', 'b11', 'c11', '2', 'e11', 'f11\n']]
然后继续for eachRow in buffer:
,但也没有好处。
我只需要写一个.csv就应该很容易......我错过了什么?
答案 0 :(得分:2)
您可以像这样从缓冲区中删除\ n字符串。此外,您必须将newline=''
添加到Python 3中的with语句中。有关详细信息,请参阅this answer。
import csv
buffer = [['a17', 'b17', 'c17', '8', 'e17', 'f17\n'],
['a24', 'b24', 'c24', '6', 'e24', 'f24\n'],
['a27', 'b27', 'c27', '9', 'e27', 'f27\n'],
['a18', 'b18', 'c18', '9', 'e18', 'f18\n'],
['a5', 'b5', 'c5', '5', 'e5', 'f5\n'],
['a20', 'b20', 'c20', '2', 'e20', 'f20\n'],
['a10', 'b10', 'c10', '1', 'e10', 'f10\n'],
['a3', 'b3', 'c3', '3', 'e3', 'f3\n'],
['a11', 'b11', 'c11', '2', 'e11', 'f11\n']]
for row_index, list in enumerate(buffer):
for column_index, string in enumerate(list):
buffer[row_index][column_index] = buffer[row_index][column_index].replace('\n', '')
with open('output.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerows(buffer)
答案 1 :(得分:1)
import csv
with open('output.csv','w') as f:
writer = csv.writer(f)
writer.writerows(buffer)
请注意,每个列表中的最后一个条目都有换行符,因此csvwriter正在引用该字符串,因此您最终得到"f17\n"
(在第一个列表中作为示例),如果看起来格式奇怪,你不期待换行。