簡體   English   中英

For循環未使用Python遍歷CSV

[英]For loop not iterating through CSV with Python

本質上,我想在此處執行的操作是以嵌套格式將CSV文件中的所有數據放入字典中,這樣我就可以在需要時轉儲json。 我需要格式化為[{"name":"Ollie","email":"josh@apple.com","phone":"0444444444","sizes":[],"taskAmount":1,"singleCheckout":true,"billingDifferent":false,"favorite":true

我有一個for循環,應采用所有csv值並將它們以我的正確格式放入字典中。

我嘗試查看我的循環,並進行了檢查,因此我看不到為什么它不起作用。 另外,在if statemnt中,如果我使用new_data_dict[row[0]]代替new_data_dict它可以正常運行,但不會以我想要的格式顯示。

我的代碼在這里

profiles = []
new_data_dict = {}
with open("test.csv", 'r') as data_file:
    reader = csv.reader(data_file)
    for row in reader:
        if row[21] == 'null':
            new_data_dict = {"name":row[0],"email":row[1],"phone":row[15],"sizes":[],"taskAmount":1,"singleCheckout":True,"billingDifferent":False,"favorite":False,"card":{"number":row[5],"expiryMonth":row[7],"expiryYear":row[8],"cvv":row[6]},}
        else:
            new_data_dict = {"name":row[0],"email":row[1],"phone":row[15],"sizes":[],"taskAmount":1,"singleCheckout":True,"billingDifferent":True,"favorite":False,"card":{"number":row[5],"expiryMonth":row[7],"expiryYear":row[8],"cvv":row[6]},"delivery":{"firstName":row[20],"lastName":row[21], }}

print(new_data_dict)

我的輸入文件包含一些敏感信息,因此我無法真正顯示它,但是代碼使您對行中的內容有了一個了解。

我得到的是循環的一次迭代,它也恰好是csv中的最后一行數據,好像它是向后開始。

什么地方出了錯?

當您從csv文件中讀取行並將它們分配給for循環中的new_data_dict時,您將反復覆蓋已經存儲在其中的行。

如何解決?

您可以將它們全部放入列表或另一本詞典中,例如:

all_records = []

for row in reader: 
    row_data_dict = {"name":row[0],"email":row[1],"phone":row[15],"sizes":[]...}

    all_records.append(row_data_dict)

然后,輸出看起來就像您所描述的期望輸出。

暫無
暫無

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

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