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

时间:2011-08-02 18:08:34

标签: python csv

我正在尝试使用下面的脚本创建一个包含Python中字符串列表内容的csv文件。但是,当我检查输出文件时,结果是每个字符都用逗号分隔。如何指示CSV.writer分隔列表中的每个字符串而不是每个字符?在这种情况下,我在Snow Leopard上使用Python 2.6。

我检查了the Python guide,找不到具体的内容:

import csv

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

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

# Create Writer Object
wr = csv.writer(resultFyle, dialect='excel')

# Write Data to File
for item in RESULTS:
    wr.writerow(item)

4 个答案:

答案 0 :(得分:63)

csv.writer writerow方法将iterable作为参数。您的结果集必须是列表(列)的列表(行)。

csvwriter.writerow(row)
     

将row参数写入writer的文件对象,并根据当前方言进行格式化。

要么:

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

或:

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

答案 1 :(得分:20)

修复非常简单,只需将参数转换为一个列表即可。

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

答案 2 :(得分:5)

我知道我有点迟了,但我发现有效的(并且不需要使用# 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() )就是编写一个for循环,为列表中的每个元素写入文件。< / p>

dat %>% 
  group_by(name) %>% 
  arrange(year) %>% 
  mutate(id = cumsum(c(1L, diff(year))))

我不知道这个解决方案是否比已经提供的解决方案更好,但它更能反映你原来的逻辑,所以我想我会分享。

答案 3 :(得分:0)

示例 - 使用布尔列写入多行(使用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