[英]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.