将python列表写为文本文件行

时间:2015-02-28 16:13:25

标签: python

我有一个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必须在一行中进行调整。另外,我需要更快的性能。

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)