python 如何寫入一個 CSV 的header 與一個 dict 一致,但是前面要加上檔案名稱
你可以使用 Python 的 csv 模組來寫入 CSV,並確保 header 包含檔案名稱。這裡有兩種方法可以實現:
方法 1:使用 writerow
import csv
filename = "data.csv"
data = {"name": "Alice", "age": 25, "city": "Taipei"}
# 構造 Header,在原始 key 前面加上檔案名稱
header = [filename] + list(data.keys())
with open(filename, "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
# 寫入 Header
writer.writerow(header)
# 寫入資料(值前面也可加上檔案名稱)
writer.writerow([filename] + list(data.values()))
方法 2:使用 DictWriter
import csv
filename = "data.csv"
data = {"name": "Alice", "age": 25, "city": "Taipei"}
# 構造 Header
header = ["filename"] + list(data.keys())
with open(filename, "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=header)
# 寫入 Header
writer.writeheader()
# 寫入資料(需添加 filename)
row = {"filename": filename, **data}
writer.writerow(row)
這兩種方式都會在 CSV 中寫入:
data.csv,name,age,city data.csv,Alice,25,Taipei
根據你的需求選擇適合的方式!
是不是有一種方法可以直接把 data.keys() 展開? 而不需要用 + list
是的,你可以使用「 (*)」來展開 data.keys(),這樣可以避免 + list(data.keys()) 的寫法,使程式碼更簡潔。
改進版寫法
方法 1:使用 writerow
import csv
filename = "data.csv"
data = {"name": "Alice", "age": 25, "city": "Taipei"}
with open(filename, "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
# 使用 `*` 解包 keys,將 filename 插入第一個位置
writer.writerow([filename, *data.keys()])
# 使用 `*` 解包 values,將 filename 插入第一個位置
writer.writerow([filename, *data.values()])
方法 2:使用 DictWriter
import csv
filename = "data.csv"
data = {"name": "Alice", "age": 25, "city": "Taipei"}
with open(filename, "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=["filename", *data.keys()])
writer.writeheader()
writer.writerow({"filename": filename, **data})
這樣就不需要手動轉換成 list,直接展開 keys() 或 values(),程式碼更簡潔直觀!

留言板
歡迎留下建議與分享!希望一起交流!感恩!