列表未正确写入CSV文件

时间:2017-06-11 06:42:06

标签: python list csv

我有list喜欢:

('so glad', 'happy')
('it is so sad', 'sad')

我想将此列表写入CSV文件,如:

column1          column2
so glad          happy
it is so sad     sad

我使用以下代码执行此操作:

with open('test.csv', "a") as outfile:
    for entries in my_list:
        outfile.write(entries)
        outfile.write("\n")

但它将

写入CSV文件
column1
so glad
happy
it is so sad
sad

如何按照我的预期来完成此代码?

2 个答案:

答案 0 :(得分:1)

import csv

with open('test.csv', 'wb') as outfile:
    wr = csv.writer(outfile, quoting=csv.QUOTE_ALL)
    wr.writerow(entries)

答案 1 :(得分:1)

对于python 3: 使用 writerow 编写从列表中获取的行(可迭代)

import csv
my_list =[('so glad', 'happy'),
('it is so sad', 'sad')]
with open('mycsv.csv','w+') as fileobj:
    csvwriter = csv.writer(fileobj)
    for row in my_list:
        csvwriter.writerow(row)

或使用带有可迭代的 writerows (可迭代是可用于迭代的任何内容,因此您的my_list是可迭代的列表)并获取行并相应地保存它们

import csv
my_list =[('so so glad', 'happy'),
('it is so sad', 'sad')]
with open('mycsv.csv','w+') as fileobj:
    csvwriter = csv.writer(fileobj)
    csvwriter.writerows(my_list)

对于python 2:

with open('mycsv.csv','w+') as fileobj:

使用wb而不是w +

mycsv.csv中的输出是:

so so glad,happy
it is so sad,sad

另请注意,我在此处使用 w + 作为模式,如果csv文件已存在则会截断csv文件或创建新文件并将内容写入其中

有几种模式可以根据需要使用。 看一下python的File modes文档

  

在Windows上,附加到模式的'b'以二进制模式打开文件,因此还有'rb','wb'和'r + b'等模式。 Windows上的Python区分了文本和二进制文件;读取或写入数据时,文本文件中的行尾字符会自动稍微改变。这种对文件数据的幕后修改适用于ASCII文本文件,但它会破坏像JPEG或EXE文件中的二进制数据。