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.
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..
I would do like this.
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')
As a result, I get this in output.txt:
1.0
0:25.0
1:50.0
-1.0
0:56.0
1:53.0
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With