亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 CSV 檢索數據并將其保存到列表中時遇到問題

從 CSV 檢索數據并將其保存到列表中時遇到問題

慕村9548890 2021-09-28 17:07:38
我的 Data.csv 文件如下所示:0001 ABC 0002 CDE 0003 FGH我打算放入一個列表,即tickerinfo:股票信息 = [['00001','ABC'],['00002','CDE'],['00003','FGH']]我的代碼:import csvtickerinfo = [] 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 的順序?
查看完整描述

2 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

嘗試這個:


import csv


with 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 copy


tickerinfo.append(ticker.copy())


查看完整回答
反對 回復 2021-09-28
?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

您正在使用delimiter=','但 csv 文件由' '(空格)分隔,因此將分隔符更改為delimiter=' '. 你可以這樣做:


import csv


ticker_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']]


查看完整回答
反對 回復 2021-09-28
  • 2 回答
  • 0 關注
  • 232 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號