我正在尝试使用下面的脚本创建一个包含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)
答案 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