Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
257 views
in Technique[技术] by (71.8m points)

python how to write list of lists to file

I am trying to write a list of lists of strings to a file. My big list is of the 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 ... 

the first column is of type int and the remaining are of type str.

I have tried the following code:

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

But I get the following error:

TypeError: expected a character buffer object

the error occured in line 3 of the above code (f.write(...))

EDIT:

I have tried:

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

But, surprisingly, for lines starting with -1.0 I only get the 1st 31 elements ( each line (list) contains 362 elements). I have no idea why this is happening.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Use the csv library:

import csv

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

writerows takes an iterable of iterables so the content of each sublist will be written to each row.

So for list_of_lists = [[1,2,3],[4,5,6],[7,8,9]] your out.csv would look like:

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

And as Scironic commented, you can pass whatever delimiter you want, i.e wr = csv.writer(f, delimiter=" ") for a space etc..


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...