Python 为什么csvwriter.writerow()在每个字符后都放一个逗号?

Python 为什么csvwriter.writerow()在每个字符后都放一个逗号?,python,csv,Python,Csv,此代码打开url并在末尾追加/names,打开页面并将字符串打印到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

此代码打开url并在末尾追加
/names
,打开页面并将字符串打印到
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)
但我得到的结果是:

J,D,“,”,C,o,l,u,m,b,i,a,l,a,w,S,C,h,o,o,o,l,…。

如果我将字符串改为(“JD”,“哥伦比亚法学院…”),那么

哥伦比亚法学院法学博士…

我在文档中找不到如何指定delimeter

如果我尝试使用
delimenter
我会得到以下错误:

TypeError: 'delimeter' is an invalid keyword argument for this function
感谢您的帮助。

它需要字符串序列(例如:列表或元组)。你给它一根线。一个字符串碰巧也是一个字符串序列,但它是一个由1个字符串组成的序列,这不是您想要的

如果每行只需要一个字符串,可以执行以下操作:

csvwriter.writerow([JD])

这会用列表包装JD(字符串)。

这种情况会发生,因为当MatchObject实例的group()方法仅返回单个值时,它会将其作为字符串返回。当有多个值时,它们将作为字符串元组返回


如果您正在写一行,我想csv.writer会迭代您传递给它的对象。如果传递单个字符串(iterable),它将在其字符上迭代,生成您正在观察的结果。如果您传递一个字符串元组,它将获得一个实际字符串,而不是每次迭代中的一个字符。

csv.writer类将iterable作为其writerow的参数;由于Python中的字符串可以按字符进行iterable,因此它们是writerow可以接受的参数,但是您可以得到上面的输出

要纠正这一点,可以根据空格分割值(我假设这就是您想要的)


它是
分隔符,而不是
delimeter
:如果writer.writerows出现此问题,请向它传递列表列表,而不是字符串列表。谢谢!这把它修好了。我也会尝试其他答案。我还创建了一个空列表JDList=[]并将JD附加到该列表中,这同样有效,但更简单。有没有办法解决这个问题?@CGFoX您可以发布示例代码来演示这一点吗?
writer.writerow([datetime.now().strftime(%Y-%m-%d%H:%m:%S”))
将日期时间写为
“2016-11-05 20:30:19”
@CGFoX我无法重现这种行为。我得到的
2016-11-05 13:21:11
没有引号。您使用的是什么版本的Python?
csvwriter.writerow(JD.split())