CSV DictReader只读取CSV文件的第一个字符
我正在尝试写一个小的Python脚本,用来处理CSV格式的数据。我读取了网址,打印变量时数据是存在的,但当我用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 个回答
-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模块。
2
根据csv模块的文档,你需要把一个文件或者类似文件的东西传给读取器,而不是直接传一个字符串。我不太清楚urlopen
返回的是什么,但你可以试着把response
传给读取器。或者,你也可以使用StringIO对象,这个就是为了这个目的而设计的——html = StringIO.StringIO(response.read())
应该可以做到。