python csv.read接缝以查找更多换行符

时间:2014-03-03 00:52:58

标签: python csv python-3.x

我使用python3并尝试解析一个csv字符串,这是我从urllib响应中得到的。

解码后的字符串如下:

"s","p","o"
"http://www.openlinksw.com/virtrdf-data-formats#default-iid","http://www.w3.org/1999/02/22-rdf-syntax-ns#type","http://www.openlinksw.com/schemas/virtrdf#QuadMapFormat"

编辑:print(repr(responseString))给了我:

'"s","p","o"\n"http://www.openlinksw.com/virtrdf-data-formats#default-iid","http://www.w3.org/1999/02/22-rdf-syntax-ns#type","http://www.openlinksw.com/schemas/virtrdf#QuadMapFormat"\n'

但在运行resultSet = csv.reader(responseString)并使用以下循环打印结果后:

for row in resultSet:
    print(row)

它显示了以下结果:

['s']
['', '']
['p']
['', '']
['o']
[]
['http://www.openlinksw.com/virtrdf-data-formats#default-iid']
['', '']
['http://www.w3.org/1999/02/22-rdf-syntax-ns#type']
['', '']
['http://www.openlinksw.com/schemas/virtrdf#QuadMapFormat']
[]

哪个缝合不正确。特别是我想知道这些空行(['', ''])来自哪里。

edit2:根据我对CSV的理解,我希望如下:

['s', 'p', 'o']
['http://www.openlinksw.com/virtrdf-data-formats#default-iid', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type', 'http://www.openlinksw.com/schemas/virtrdf#QuadMapFormat']

2 个答案:

答案 0 :(得分:3)

csv.reader遍历给定的对象,并将每个项目解释为一行(适用于文件描述符)。 但是,你给它一个字符串,并遍历一个字符串...给出字符。

您应该直接将套接字对象传递给它,或者,如果不能,则按照以下方式传递:

resultSet = csv.reader(responseString.split('\n'))

答案 1 :(得分:1)

您可以使用StringIO(在Py3的io模块中;它在Py2中拥有模块)将字符串转换为类似对象的文件:

txt='"s","p","o"\n"http://www.openlinksw.com/virtrdf-data-formats#default-iid","http://www.w3.org/1999/02/22-rdf-syntax-ns#type","http://www.openlinksw.com/schemas/virtrdf#QuadMapFormat"\n'

import csv
from io import StringIO

for line in csv.reader(StringIO(txt)):
    print(line)

打印:

['s', 'p', 'o']
['http://www.openlinksw.com/virtrdf-data-formats#default-iid', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type', 'http://www.openlinksw.com/schemas/virtrdf#QuadMapFormat']