我使用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']
答案 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']