python如何写列表到文件

时间:2015-06-08 14:29:28

标签: python list file-io

我正在尝试将一个字符串列表写入文件。 我的大名单是forme:

 1.0 '0:25.0' '1:50.0' '2:131.0' '3:202.0'
 1.0 '0:2.0'  '1:36.0' '2:131.0' '3:188.0'
-1.0 '0:56.0' '1:53.0' '2:55.0'  '3:58.0'
-1.0 '0:50.0' '1:51.0' '2:48.0'  '3:55.0'  
 and so on ... 

第一列的类型为int,其余的类型为str。

我尝试过以下代码:

f = open('dataset', 'w')
for i in range(len(mylist[0]):
     f.write(str(item) for item in mylist[i])
f.close()

但是我收到以下错误:

TypeError: expected a character buffer object

错误发生在上面代码的第3行(f.write(...))

编辑:

我试过了:

 with open("train_data.csv", 'w') as f:
     writer = csv.writer(f)
     writer.writerows(listdata)

但令人惊讶的是,对于以-1.0开头的行,我只得到前31个元素(每行(列表)包含362个元素)。我不知道为什么会这样。

2 个答案:

答案 0 :(得分:8)

使用csv库:

import  csv

with open("out.csv","w") as f:
    wr = csv.writer(f)
    wr.writerows(list_of_lists)

writerows采用可迭代的迭代次数,因此每个子列表的内容将写入每一行。

所以对于list_of_lists = [[1,2,3],[4,5,6],[7,8,9]]你的out.csv看起来像是:

1,2,3
4,5,6
7,8,9

正如Scironic评论的那样,你可以传递你想要的任何分隔符,即wr = csv.writer(f,delimiter=" ")以获得空间等。

答案 1 :(得分:2)

我会这样做。

from __future__ import with_statement

mylist = [[1.0,'0:25.0','1:50.0'],[-1.0,'0:56.0','1:53.0']] # as example

with open('output.txt', 'w') as f:
    for _list in mylist:
        for _string in _list:
            #f.seek(0)
            f.write(str(_string) + '\n')

结果,我在output.txt中得到了这个:

1.0
0:25.0
1:50.0
-1.0
0:56.0
1:53.0