我正在尝试编写一个通过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。
答案 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模块。