python中writerow的作用_为什么csvwriter.writerow()在每个字符之后都放一个逗号?...

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

此代码打开url并在末尾附加/names ,并打开页面并将string打印到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,l,....

如果我把string改成(“JD”,“哥伦比亚法学院”),那么我就可以得到

JD, Columbia Law School...)

在文档中我找不到如何指定分隔符。

如果我尝试使用delimenter我得到这个错误:

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

谢谢您的帮助。

它期望一个string的序列(例如:一个列表或元组)。 你给它一个单一的string。 一个string恰好也是一串string,但它是一串1个字符的string,这不是你想要的。

如果你只想每行一个string,你可以这样做:

csvwriter.writerow([JD])

这包装一个列表的JD(一个string)。

csv.writer类需要一个迭代,因为它是writerow的参数; 由于Python中的string可以按字符迭代,它们是Writer可以接受的参数,但是您可以获得上述输出。

要纠正这个问题,你可以根据空格分割值(我假设你想要的)

csvwriter.writerow(JD.split())

发生这种情况是因为当一个MatchObject实例的group()方法只返回一个值时,它会以stringforms返回它。 当有多个值时,它们作为string的元组返回。

如果你正在写一行,我想,csv.writer遍历你传递给它的对象。 如果你传递一个单一的string(这是一个可迭代的),它遍历它的字符,产生你正在观察的结果。 如果你传递一个string元组,它会得到一个实际的string,而不是每个迭代中的一个字符。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值