2012-01-04 49 views
-1

我的Python脚本通过urllib2打开一个文件;数据是这样的:关闭网站的CSV格式数据未被正确解析

"Charitable Donation: Contribution","012","","","","","","","","","","","","","","","","","","","","" 

的Python脚本:

reader = csv.reader(data, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL) 
for row in reader: 
    print row 

输出是这样的:

['Charitable Donation: Contribution'] 
['', ''] 
['012'] 
['', ''] 
[''] 
['', ''] 
[''] 
['', ''] 
[''] 
['', ''] 
[''] 
['', ''] 
[''] 
['', ''] 
[''] 
['', ''] 
[''] 
['', ''] 
[''] 
['', ''] 
[''] 

我在做什么错?

+2

它正在做你到底在问什么。你对“有用”的定义是什么? – 2012-01-04 20:28:45

+1

'CSV'中的'C'代表'COMMA'代表'COMMA'作为你的分隔符,而不是''' – 2012-01-04 20:30:41

+2

-1:显示的输出不是来自显示的代码 – 2012-01-04 21:00:29

回答

3

您使用双引号(")作为分隔符而不是逗号(,)... 为什么?如何

reader = csv.reader(data, delimiter=',', quoting=csv.QUOTE_ALL) 
for row in reader: 
    print row 

# you can omit the delimiter argument as well, since comma is the default: 
reader = csv.reader(data, quoting=csv.QUOTE_ALL) 
# etc. 
+1

(-1)你测试了你的代码吗?它提供了与Python 2.7上的OP完全相同的输出。 – FakeRainBrigand 2012-01-04 20:39:05

+0

不,它当然不会。 – 2012-01-04 20:41:45

+0

你能解释吗?[ideone](http://ideone.com/WEqJe) – FakeRainBrigand 2012-01-04 20:48:06

1

我想你使用了错误的分隔符 - 你应该使用',',并有再照顾的事实,你得到的部分引用。

2

您希望逗号作为分隔符,因为分隔符是用于分隔值的分隔符。 的quotechar是“,因为它是什么值包含在。

尝试

reader = csv.reader(data, delimiter=',',quotechar='"', quoting=csv.QUOTE_ALL) 
+0

(-1)你测试了你的代码它提供了与Python 2.7上的OP完全相同的输出 – FakeRainBrigand 2012-01-04 20:41:06

2

第一个参数是一个迭代器。在这个例子中here,他们使用一个文件对象。遍历字符串给每个字符,但你只想线最简单的解决方法是让data列表

reader = csv.reader([data]) 
for row in reader: 
    print row 

它给人的输出:。

['Charitable Donation: Contribution', '012', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] 
+0

顺便说一句,我不确定分隔符或引用参数,所以我将它们保留原样,它仍然给出了预期的输出,但可以随意更正我在那 – FakeRainBrigand 2012-01-04 20:36:04

+0

这就是当我将它列入列表中时得到的结果_csv.Error:在未加引号的字段中显示的换行符 - 是否需要以通用换行符模式打开文件? – jimstandard 2012-01-04 20:43:58

+1

我相信我在编辑时进行了编辑。它现在应该工作。 [ideone](http://ideone.com/77KkE) – FakeRainBrigand 2012-01-04 20:50:39