从 CSV 检索数据并将其保存到列表中时遇到问题

我的 Data.csv 文件如下所示:


0001 ABC 

0002 CDE 

0003 FGH

我打算放入一个列表,即tickerinfo:


股票信息 = [['00001','ABC'],['00002','CDE'],['00003','FGH']]


我的代码:


import csv


tickerinfo = [] 

ticker=['','']



with open('Data.csv') as csvfile:

    readCSV = csv.reader(csvfile, delimiter=',')        

    for row in readCSV:

        ticker[0] = row[0]

        ticker[0] = '0000' + str(ticker[0])

        ticker[0] = ticker[0][-5:]

        ticker[1] = row[1]

        tickerinfo.append(ticker)

    print(tickerinfo)

结果:


[['00003', 'FGH'], ['00003', 'FGH'], ['00003', 'FGH']]


为什么会这样?以及如何解决问题?为什么所有元素都是 0003 而不是 0001,0002 和 0003 的顺序?


慕村9548890
浏览 220回答 2
2回答

慕无忌1623718

尝试这个:import csvwith open('Data.csv') as csvfile:    readCSV = csv.reader(csvfile, delimiter=' ')    tickerinfo= [[row[0].zfill(5), row[1]] for row in readCSV]您的代码工作正常,唯一的小问题是您ticker在结果中附加了三遍,首先,迭代代码将是,['0001', 'ABC']但是当您更改时,ticker您将更改ticker已添加到结果中的内容,以便您更好地理解print(tickerinfo)在循环中添加, 你会得到 :[['00001', 'ABC']][['00002 ', 'CDE'], ['00002 ', 'CDE']][['00003', 'FGH'], ['00003', 'FGH'], ['00003', 'FGH']]所以为了修复你的代码,你可以使用copy或[:]喜欢这样的: tickerinfo.append(ticker[:])或者from copy import copytickerinfo.append(ticker.copy())

慕仙森

您正在使用delimiter=','但 csv 文件由' '(空格)分隔,因此将分隔符更改为delimiter=' '. 你可以这样做:import csvticker_info = []with open('Data.csv', 'r') as f:    reader = csv.reader(f, delimiter=' ')    for i in reader:        # use zfill if you want more zeros        ticker_info.append( [i[0].zfill(5), i[1]] ) print(ticker_info) // result [['00001', 'ABC'], ['00002', 'CDE'], ['00003', 'FGH']]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python