繁体   English   中英

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

[英]CSV DictReader only gets the first character of the CSV file

我正在尝试编写一个处理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。

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

为什么不只是常规的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模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM