RonTheBear
RonTheBear

Reputation: 91

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.

Upvotes: 1

Views: 6198

Answers (1)

Martijn Pieters
Martijn Pieters

Reputation: 1122142

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.

Upvotes: 3

Related Questions