Why does csvwriter.writerow() put a comma after each character?

Viewed 101219

This code opens the URL and appends the /names at the end and opens the page and prints the string to test1.csv:

import urllib2
import re
import csv

url = ("http://www.example.com")
bios = [u'/name1', u'/name2', u'/name3']
csvwriter = csv.writer(open("/test1.csv", "a"))

for l in bios:
    OpenThisLink = url + l
    response = urllib2.urlopen(OpenThisLink)
    html = response.read()
    item = re.search('(JD)(.*?)(\d+)', html)
    if item:
        JD = item.group()
        csvwriter.writerow(JD)
    else:
        NoJD = "NoJD"
        csvwriter.writerow(NoJD)

But I get this result:

J,D,",", ,C,o,l,u,m,b,i,a, ,L,a,w, ,S,c,h,o,o,l,....

If I change the string to ("JD", "Columbia Law School" ....) then I get

JD, Columbia Law School...)

I couldn't find in the documentation how to specify the delimeter.

If I try to use delimeter I get this error:

TypeError: 'delimeter' is an invalid keyword argument for this function
4 Answers

To put it another way - if you add square brackets around the whole output, it will be treated as one item, so commas won't be added. e.g. instead of:

spamwriter.writerow(matrix[row]['id'],matrix[row]['value'])

use:

spamwriter.writerow([matrix[row]['id'] + ',' + matrix[row]['value']])
Related