如何用Python从CSV文件生成两个格式规范的字典?
Python CSV行转键值对字典解决方案
问题分析
你的需求是处理包含两行交替键值的CSV文件,每行数据格式为键, 值, 键, 值...,需要将每行转换为严格格式的字典。之前遇到的问题包括:
- 冗余空格未处理
DictReader不适用(无表头结构)- 手动
split()处理格式出错
解决方案代码
import csv def csv_to_dicts(filename): with open(filename, 'r') as f: # 使用csv.reader并开启skipinitialspace去除逗号后的空格 reader = csv.reader(f, skipinitialspace=True) for row in reader: # 按两两分组,取偶数索引为键,奇数索引为值 key_value_pairs = zip(row[::2], row[1::2]) result_dict = dict(key_value_pairs) # 直接打印字典,匹配要求的格式 print(result_dict) # 调用示例(替换为你的CSV文件名) csv_to_dicts('your_file.csv')
代码说明
- 空格处理:
csv.reader的skipinitialspace=True参数会自动忽略每个字段开头的空格,解决了原数据中a, 100这类带前导空格的问题。 - 键值分组:通过列表切片
row[::2]获取所有偶数位置的元素(键),row[1::2]获取所有奇数位置的元素(值),再用zip()配对后转成字典。 - 格式匹配:直接打印字典对象,其输出格式完全符合你要求的
{'键': '值', ...}样式,无需手动拼接字符串。
测试验证
针对你提供的输入文件内容:
a, 100, b, 200, c, 300 bananas, 1.85, steak, 19.99, cookies, 4.52
运行代码后将输出:
{'a': '100', 'b': '200', 'c': '300'} {'bananas': '1.85', 'steak': '19.99', 'cookies': '4.52'}
完全匹配指定格式要求。
内容的提问来源于stack exchange,提问作者Jenna J
相关产品推荐
相关产品推荐

