2014-03-03 35 views
0

我使用python3,我嘗試解析一個csv字符串,我從urllib響應中獲取。蟒蛇csv.read接縫找到更多的換行

後的字符串解碼如下所示:

"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

這意味着行是空的 –

+0

你的字符串解析得很好。你能發表'repr(the_string)'輸出什麼嗎? – Blender

回答

3

通過它被賦予對象csv.reader迭代,並解釋每個項目爲一條線(與文件效果很好描述)。 但是,你給它一個字符串,並迭代一個字符串...給字符。

而應該通過直接的socket對象,或者,如果你不能,像這樣做:

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

還有'.splitlines()'方法 – jfs

1

您可以使用StringIO(PY 3中的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'] 
+0

是的,這也適用。謝謝 –