CSV DictReader仅获取CSV文件的第一个字符

时间:2011-12-27 01:42:54

标签: python csv

我正在尝试编写一个通过CSV数据处理的小型python脚本。当我打印变量时,我读取了URL和数据,但是当我使用csv.reader或csv.DictReader解析它时,它只读取第一个字符作为字段名称,然后将下一个字符作为它的值。我不明白我做错了什么,我很感激你的帮助。

这是我的代码:

import sys
import os
import urllib2
import csv
response = urllib2.urlopen('http://ichart.finance.yahoo.com/table.csv?s=YHOO&d=0&e=28&f=2010&g=d&a=3&b=12&c=2009&ignore=.csv')
html = response.read()
informed = csv.DictReader(html)

for row in informed:
  print row

为第一行打印出['D':'a']的字典,其余的都是字符对。任何帮助表示赞赏。我在Windows上使用python 2.6。

2 个答案:

答案 0 :(得分:0)

根据csv module docs,您需要将文件或类文件对象传递给阅读器,而不是字符串。我不熟悉urlopen返回的内容,但您可以尝试将response传递给读者。或者,你可以使用StringIO object就是为了这个目的 - html = StringIO.StringIO(response.read())应该这样做。

答案 1 :(得分:-1)

为什么不只是常规for循环?

   response = urllib2.urlopen('http://ichart.finance.yahoo.com/table.csv?s=YHOO&d=0&e=28&f=2010&g=d&a=3&b=12&c=2009&ignore=.csv')
   for line in response.readlines():
        print line.split(',')

您已将数据作为字符串,我不明白为什么要使用csv模块。