写一个Python 3列表到.csv

时间:2016-03-15 05:54:26

标签: list csv python-3.x

我有一个列表,我需要写一个.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就应该很容易......我错过了什么?

2 个答案:

答案 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"(在第一个列表中作为示例),如果看起来格式奇怪,你不期待换行。