簡體   English   中英

如何使用字典列表中的標題創建 csv 文件?

[英]How to create csv file with headers from list of dictionaries?

如何創建一個 csv 文件,標題為:姓名、職位、email 地址和薪水。 這些行應填充適當的值。

[{'Key': 'name', 'Value': 'bob'}, {'Key': 'job', 'Value': 'doctor'}, {'Key': 'email', 'Value': 'ebob@gmail.com'}, {'Key': 'salary', 'Value': '10000'}]

我檢查的每個解決方案的結構都不同,我不確定如何找到這個特定的解決方案。

https://blog.finxter.com/how-to-convert-a-python-dict-to-csv-with-header/

這是在 python 中表達數據的一種奇怪方式。字典有鍵值對,並且有一個dict來分隔它們充其量是尷尬的。 但是您可以組裝自己的理智dict並使用它來編寫 CSV。您的示例只有 1 行數據,

import csv

data = [{'Key': 'name', 'Value': 'bob'}, {'Key': 'job', 'Value': 'doctor'}, {'Key': 'email', 'Value': 'ebob@gmail.com'}, {'Key': 'salary', 'Value': '10000'}]

header = ('name', 'job', 'email', 'salary')

row = {kv_dict['Key']:kv_dict['Value'] for kv_dict in data}

with open("test.csv", "w", newline="") as outfile:
    writer = csv.DictWriter(outfile, fieldnames=header)
    writer.writeheader()
    writer.writerow(row)
import csv

mylist = [{'Key': 'name', 'Value': 'bob'}, {'Key': 'job', 'Value': 'doctor'},
          {'Key': 'email', 'Value': 'ebob@gmail.com'}, {'Key': 'salary', 'Value': '10000'}]


data = {}

for d in mylist:
    data[d['Key']] = d['Value']

headers = list(data[0].keys())

with open('data.csv', 'w', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=headers)
    writer.writeheader()


    for d in data:
        writer.writerow(d)
f.close()

答案的草稿。

import csv

l = [{'Key': 'name', 'Value': 'bob'}, {'Key': 'job', 'Value': 'doctor'}, {'Key': 'email', 'Value': 'ebob@gmail.com'}, {'Key': 'salary', 'Value': '10000'}]
d = {v["Key"]: v["Value"] for v in l}
d
{'name': 'bob', 'job': 'doctor', 'email': 'ebob@gmail.com', 'salary': '10000'}

data_list = []
data_list.append(d)

with open('output_file.csv', 'w') as csv_file:
    hdrs = d.keys()
    csvDictR = csv.DictWriter(csv_file, hdrs)
    csvDictR.writeheader()
    csvDictR.writerows(data_list)

cat output_file.csv
name,job,email,salary
bob,doctor,ebob@gmail.com,10000

暫無
暫無

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

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