我正在預處理一個csv文件,並希望輸出由字段過濾的csv文件數據組成的3個字典。Python函數只運行一次
的設置是:
import csv
from m_functions import region_goals
csvFile = # a file path
mnDict = dict()
nlDict = dict()
neDict = dict()
# READ CSV
weekList = csv.reader(open(csvFile))
# CREATE DICTIONARY FOR THIS WEEK AND REGION
region_goals(weekList, "STR1", neDict)
region_goals(weekList, "STR2", mnDict)
region_goals(weekList, "STR3", nlDict)
的region_goals函數爲:
def region_goals(csv, region, region_dictionary):
firstline = True
for row in csv:
if firstline:
firstline = False
continue
if row[14] == region:
if row[16] not in region_dictionary:
region_dictionary[row[16]] = float(row[6])
else:
region_dictionary[row[16]] += float(row[6])
else:
continue
return region_dictionary
輸出始終如預期的第一次使用的功能。第二次我使用這個函數,返回空字典。
我敢肯定,這是我缺少一些小東西,但我是python新手,一直在努力解決這個問題。預先感謝您的回覆。
您已經在第一次調用中迭代了文件,因此後面的調用沒有任何可讀的內容。您可能需要將調用移動到'weekList = csv.reader(open(csvFile))'到函數中(所以文件被重新打開),或者如果csv.reader類支持,您可以嘗試'weekList.seek(0)'它。 –
如果函數返回三個字典,那麼顯然它會運行三次。 –
不錯的嘗試阿納布,但如果你看看上面的內容,在設置過程中會創建三個空字典。 –