簡體   English   中英

Python CSV閱讀器將Row作為列表返回

[英]Python CSV reader return Row as 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()

這將返回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]

編輯:

正如答案所說,我在上面的代碼中使用了錯誤的csv函數,但即使修復它給了我一個列表,列表本身也與dict的格式相同,這樣:

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

原來我也不得不刪除.read()data = urllib.urlopen(url).read()

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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM