4

How I can write into a csv file in python so that,a list(which is a list of lists)

[['CL07001006', 'IM20010809'], ['IM75630511', 'IM75550511', 'IM75610511', 'IM75640511', 'IM75500511'],['CL0700100r','CL0700100U','PL07001006']]

in the following format:

CL07001006 IM75630511 CL0700100r
IM20010809 IM75550511 CL0700100U
           IM75610511 PL07001006
           IM75640511
           IM75500511

I have tried something like below:

def demo():
    lol = [['CL07001006', 'IM20010809'], ['IM75630511', 'IM75550511', 'IM75610511',  'IM75640511', 'IM75500511']]
    file = open("dummy.csv", 'wb')
    fileWritter = csv.writer(file, delimiter='\n',quotechar='|', quoting=csv.QUOTE_MINIMAL)
    for l in lol:
        fileWritter.writerow(l)


if __name__ == '__main__':
    demo()

which results in like below:

CL07001006
IM20010809
IM75630511
IM75610511
IM75640511
IM75500511

Thanks.

  • 1
    You'll need to transpose the lists (making rows columns) and fill in the missing values with None. After than you can use csv.writerows – Miki Tebeka May 14 '12 at 17:37
  • 1
    A CSV file would have rows of the format "CL07001006,IM75630511,CL0700100r\n". Is this what you want? – Andrew Buss May 14 '12 at 17:40

1 Answers1

3
>>> import itertools
>>> import csv
>>> x = [['CL07001006', 'IM20010809'], ['IM75630511', 'IM75550511', 'IM75610511', 'IM75640511', 'IM75500511'],['CL0700100r','CL0700100U','PL07001006']]
>>> outs = csv.writer(open("out.csv", "wb"))
>>> for row in itertools.izip_longest(*x):
...     outs.writerow(row)
...
>>> ^D

$ cat "out.csv"
CL07001006,IM75630511,CL0700100r
IM20010809,IM75550511,CL0700100U
,IM75610511,PL07001006
,IM75640511,
,IM75500511,
robert
  • 33,242
  • 8
  • 53
  • 74