我有一个python列表如下:
data = [1,2,3,4,5]
我想在文本文件中写如下:
1,2,3,4,5 ##as comma delineated.
我试过:
with open ('data.txt', 'w') as fo:
for d in data:
fo.write(str(d) + '\n')
但它写的数据如下:
1
2
3
4
5
你会怎么做呢?
编辑:
我还将从for-loop获得其他列表,因此所有一个列表,即1,2,3,4,5必须在一行中进行调整。另外,我需要更快的性能。
答案 0 :(得分:6)
您希望将CSV(逗号分隔值)文件作为输出。您可以使用CSV python模块。
示例可能如下所示:
import csv
data = [1,2,3,4,5]
with open('test.csv', 'w') as csvfile:
writer = csv.writer(csvfile, delimiter=",")
writer.writerow(data)
答案 1 :(得分:4)
您可以使用join
方法
with open ('data.txt', 'w') as fo:
fo.write(','.join(str(i) for i in data))
答案 2 :(得分:2)
最简单的方法是将列表转换为连接字符串,然后写:
str_data = ','.join(str(i) for i in data)
with open('data.txt', 'w') as fo:
fo.write(str_data)
如果列表太长而无法将其全部转换为字符串:
with open('data.txt', 'w') as fo:
for idx, item in enumerate(data):
if idx: # don't need a comma before the list
fo.write(',')
fo.write(item)
更新:所有人都说,aus_lacy关于CSV的建议似乎是最好的。
答案 3 :(得分:1)
data = [1, 2, 3, 4, 5]
with open ('data.txt', 'w') as fo:
fo.write(','.join([str(n) for n in data]))
答案 4 :(得分:0)
一种简单的方法
data=[1,2,3,4,5]
with open ('data.txt', 'w') as fo:
for d in data:
if d!=data[len(data)-1]:
fo.write(str(d)+',')
else:
fo.write(str(d))
不是那么简单:
dat=','.join([str(t) for t in data])
fo.write(dat)