Python CSV阅读器将Row作为列表返回

Dav*_*d91 6 python csv google-app-engine parsing list

我试图使用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()
Run Code Online (Sandbox Code Playgroud)

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

for row in dictReader:
    print row
Run Code Online (Sandbox Code Playgroud)

我把它作为输出:

{'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'}
Run Code Online (Sandbox Code Playgroud)

成千上万的线路.(因为我确定CSV是数千位数)

为什么我的CSV打印方式是这样的,无论如何将行分成3个列表,ints如[130534543,47.00009,23001.9000]

编辑:

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

['1']
['2']
['1']
['3']
['8']
['3']
['5']
.
.
.
Run Code Online (Sandbox Code Playgroud)

原来我也不得不删除.read()data = urllib.urlopen(url).read().

dm0*_*514 8

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]
Run Code Online (Sandbox Code Playgroud)