Python CSV 阅读器返回行作为列表

2023-12-21

我正在尝试使用 python 解析 CSV,并希望能够对一行中的项目进行索引,以便可以使用以下命令访问它们row[0], row[1]等等。

到目前为止,这是我的代码:

def get_bitstats():
    url = 'http://bitcoincharts.com/t/trades.csv?symbol=mtgoxUSD'
    data = urllib.urlopen(url).read()
    dictReader = csv.DictReader(data)
    obj = BitData()
    for row in dictReader:

        obj.datetime = datetime.datetime.fromtimestamp(int(row['0'])/1000000)
        q = db.Query(BitData).filter('datetime', obj.datetime)
        if q != None:
            raise ValueError(obj.datetime + 'is already in database')
        else:
            obj.price = row['1']
            obj.amount = row['2']
            obj.put()

这返回KeyError: '0'我不知道如何设置它。我确实将其输入到交互式 shell 中并在运行时

for row in dictReader:
    print row

我得到这个作为输出:

{'1': '3'}
{'1': '6'}
{'1': '2'}
{'1': '6'}
{'1': '9'}
{'1': '8'}
{'1': '6'}
{'1': '4'}
{'1': '4'}
{'1': '', None: ['']}
{'1': '4'}
{'1': '2'}
{'1': '.'}
{'1': '0'}
{'1': '5'}
{'1': '7'}
{'1': '1'}
{'1': '6'}
{'1': '0'}
{'1': '0'}
{'1': '0'}
{'1': '0'}
{'1': '0'}
{'1': '0'}
{'1': '0'}
{'1': '', None: ['']}
{'1': '0'}
{'1': '.'}
{'1': '0'}
{'1': '1'}
{'1': '0'}
{'1': '0'}
{'1': '5'}
{'1': '4'}
{'1': '2'}
{'1': '5'}
{'1': '0'}
{'1': '0'}
{'1': '0'}
{'1': '0'}
{'1': '1'}
{'1': '3'}
{'1': '6'}
{'1': '2'}
{'1': '6'}
{'1': '9'}
{'1': '8'}
{'1': '6'}
{'1': '4'}
{'1': '4'}

如此下去,有成千上万行。 (我确信 CSV 有数千位数字)

为什么我的 CSV 是以这种方式打印的,是否可以将一行分成 3 个列表ints如[130534543, 47.00009, 23001.9000]

EDIT:

正如答案所述,我在上面的代码中使用了错误的 csv 函数,但即使修复它给了我一个列表,列表本身的格式与字典相同,这样:

['1']
['2']
['1']
['3']
['8']
['3']
['5']
.
.
.

事实证明我还必须删除.read() from data = urllib.urlopen(url).read().


csv.reader http://docs.python.org/2/library/csv.html#csv.reader将以列表形式返回每一行

reader = csv.reader(data)

for line_list in reader:
   pass
   # line_list is a list of the data contained in a row so you can access line_list[0]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python CSV 阅读器返回行作为列表 的相关文章

随机推荐