简体   繁体   中英

Python 3.4 writing a list to a csv

I am having trouble writing a list to a csv. My current code writes the list (comprised of strings) to the file with spaces between each character. This is what I'm working with, the problem is most likely in the last 3 or 4 lines:

import csv
import sys
import collections

c1 = set()
c2 = set()
c3 = set()

new=(r'file')
old=(r'file2')

with open(new, 'r') as newfile:
    newreader = csv.reader(newfile, delimiter=(','))
    for row in newreader:
        c1.add(row[0])

with open(old, 'r') as oldfile:
    oldreader = csv.reader(oldfile, delimiter=(','))
    for row in oldreader:
        c2.add(row[0])

c3=c2-c1
c1=c2|c3
print(c1)
print(c2)
print(c3)

with open (r'csv1.csv', 'w', newline='') as write_file:
    write=csv.writer(write_file, delimiter=' ')

    write.writerows(list(c1))

Thanks in advance for any help.

writer.writerows() (plural, with s ), takes a sequence of sequences ; each nested sequence is a row with columns.

Your set on the other hand, is not such a nested structure. Produce one with a generator expression:

with open (r'csv1.csv', 'w', newline='') as write_file:
    write=csv.writer(write_file)
    write.writerows([r] for r in c1)

This produces lists with one column for each row. Since there is just the one column, it doesn't matter what you set the delimiter to.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM