如何将含动态日期键的Python字典列表自动写入Excel或CSV?
解决方案:处理动态日期键并自动写入Excel/CSV
嘿,这个需求我之前处理类似数据时也碰到过,动态键确实有点小麻烦,但拆解下来其实很简单,咱们一步步来搞定:
第一步:统一动态日期键的格式
首先得把每个字典里的old_date或new_date统一成固定键名,比如date,这样后续写入文件时列名能保持一致:
date_candidates = ['old_date', 'new_date'] test = [ {'product': 'Business 1', 'amount': '1000000', 'old_date': '01 Mar,2018 19:18:29', 'num': '2', 'status': 'review'}, {'product': 'Business 2', 'amount': '1000000', 'new_date': '01 Mar,2018 19:18:29', 'num': '92', 'status': 'progress'} ] # 处理数据,将动态日期键转为固定的'date'键 processed_data = [] for item in test: # 找到当前字典里存在的日期键 date_key = next(key for key in date_candidates if key in item) # 复制原字典避免修改原始数据,然后替换键名 processed_item = item.copy() processed_item['date'] = processed_item.pop(date_key) processed_data.append(processed_item)
处理完后,processed_data里的所有字典都会有统一的date键,后续操作就顺畅多了。
第二步:自动写入CSV文件
用Python内置的csv模块就能轻松实现,代码简洁直接:
import csv # 定义输出的列顺序,确保列的排列符合预期 fieldnames = ['product', 'amount', 'date', 'num', 'status'] with open('business_data.csv', 'w', newline='', encoding='utf-8') as csv_file: writer = csv.DictWriter(csv_file, fieldnames=fieldnames) # 写入表头 writer.writeheader() # 批量写入所有数据 writer.writerows(processed_data)
第三步:自动写入Excel文件
如果需要写入.xlsx格式,用pandas会更省心,先安装依赖包:
pip install pandas openpyxl
然后编写代码:
import pandas as pd # 将处理好的数据转为DataFrame df = pd.DataFrame(processed_data) # 指定列的顺序(可选,确保列排列符合需求) df = df[['product', 'amount', 'date', 'num', 'status']] # 写入Excel,index=False表示不生成默认的索引列 df.to_excel('business_data.xlsx', index=False, engine='openpyxl')
小补充
- 如果担心数据里同时出现
old_date和new_date(虽然你说不会,但可以加个异常处理):比如在找日期键时,判断如果两个键都存在,就根据业务规则选一个,或者抛出提示。 - 数据量很大的话,
pandas的效率会比内置csv模块更高,而且处理复杂格式(比如日期格式化)也更灵活。
内容的提问来源于stack exchange,提问作者Bharat Bittu
相关产品推荐
相关产品推荐

