用Python将字符串列表写入Excel CSV文件

55

我正在尝试使用以下脚本创建一个包含Python中字符串列表内容的csv文件。但是,当我检查我的输出文件时,发现每个字符都被逗号分隔。我该如何指示csv.writer以分隔列表中的每个字符串而不是每个字符?

import csv

RESULTS = ['apple','cherry','orange','pineapple','strawberry']

result_file = open("output.csv",'wb')
wr = csv.writer(result_file, dialect='excel')
for item in RESULTS:
    wr.writerow(item)

我查看了PEP 305,但没有找到具体的内容。


3
Excel默认使用的是英语方言,您无需指定。 - agf
我知道你很久以前就问过这个问题,但我想知道 - 如果你每行只放一个项目,为什么需要使用 csv - Mark Ransom
4个回答

96

csv.writerwriterow 方法接受一个可迭代对象作为参数。你的结果集必须是一个包含列表(行)的列表(列)。

csvwriter.writerow(row)

row参数按照当前方言格式化后写入写入器(writer)的文件对象中。

import csv
RESULTS = [
    ['apple','cherry','orange','pineapple','strawberry']
]
with open('output.csv','w') as result_file:
    wr = csv.writer(result_file, dialect='excel')
    wr.writerows(RESULTS)

或者:

import csv
RESULT = ['apple','cherry','orange','pineapple','strawberry']
with open('output.csv','w') as result_file:
    wr = csv.writer(result_file, dialect='excel')
    wr.writerow(RESULT)

1
文档链接:csv模块,Writer对象 - crashmstr
@Andrew:第二个也可以,如果你只需要写一行,那么它可能更合适(如果解决了你的问题,你可能想将答案标记为已接受)。 - GaretJax
@crashmstr:谢谢,我也添加了链接。 - GaretJax
我们如何在插入到Excel文件时管理格式(日期,字符串,数字等)? - user1863359
@user1863359 很遗憾,CSV文件不包含任何格式信息。Excel本身会猜测每列的适当格式。有时它会猜错:科学家将人类基因重新命名,以防止Microsoft Excel将其误读为日期 - Mark Ransom

37

解决方法很简单,您只需要将参数转换为列表并传入writerow中即可。

for item in RESULTS:
    wr.writerow([item])

9

我知道有点晚了,但我发现一个有效的方法(无需使用 csv),就是编写一个循环,在列表中的每个元素中写入到您的文件。

# Define Data
RESULTS = ['apple','cherry','orange','pineapple','strawberry']

# Open File
resultFyle = open("output.csv",'w')

# Write data to file
for r in RESULTS:
    resultFyle.write(r + "\n")
resultFyle.close()

我不确定这个解决方案是否比已经提供的方案更好,但它更接近您原来的逻辑,所以我想分享一下。

2
使用不带csv模块的方式编写csv文件的主要问题在于,如果您的值包含引号或逗号,那么您的文件将会损坏。 - user3064538

3

一个示例 - 编写具有布尔列的多行(使用GaretJax和Eran上面的示例)。

import csv
RESULT = [['IsBerry','FruitName'],
          [False,'apple'],
          [True, 'cherry'],
          [False,'orange'],
          [False,'pineapple'],
          [True, 'strawberry']]
with open("../datasets/dashdb.csv", 'wb') as resultFile:
    wr = csv.writer(resultFile, dialect='excel')
    wr.writerows(RESULT)

结果:

df_data_4 = pd.read_csv('../datasets/dashdb.csv')
df_data_4.head()

输出:

   IsBerry  FruitName
   0    False   apple
   1    True    cherry
   2    False   orange
   3    False   pineapple
   4    True    strawberry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接