Python 为什么csvwriter.writerow()在每个字符后都放一个逗号?
此代码打开url并在末尾追加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
/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())