如何从导入的CSV中提取特定值并整理为目标列表格式
提取CSV中字典格式的特定值
问题场景
给定如下格式的CSV文件:
number,values 686790635,{'2019-05-24T13:46:35': 'CSCvp87661'} 686235835,{'2019-02-27T14:13:53': 'CSCvj48931'} 689324672,{'2020-06-19T08:50:53': 'CSCvs42803'} 689995407,{'2020-09-27T05:51:39': 'CSCvg55782'} 688751767,{'2020-03-26T11:28:44': 'CSCvc81396'} 689868626,"{'2020-09-10T01:29:51': 'CSCux76799', '2020-09-10T01:29:53': 'CSCux76799'}" 689206940,{'2020-06-02T20:40:44': 'CSCvo65492'} 686259208,"{'2019-03-11T02:55:43': 'CSCvi66732', '2019-03-11T02:55:52': 'CSCvg81628'}" 689030956,{'2020-05-07T10:05:09': 'CSCvh19223'}
需要提取所有values列中字典对应的值,整理成如下格式的列表:
values = [CSCvp87661,CSCvj48931, CSCvs42803, CSCvg55782, CSCvc81396, CSCux76799, CSCux76799, CSCvo65492, CSCvi66732, CSCvg81628, CSCvh19223]
解决方案
使用Python的csv模块读取文件,结合ast.literal_eval安全解析字典格式字符串,再提取目标值:
步骤1:导入依赖模块
import csv import ast
步骤2:读取CSV并提取值
values = [] # 替换为你的CSV文件路径 with open('your_file.csv', 'r') as f: reader = csv.DictReader(f) for row in reader: # 将字符串格式的字典转为Python字典对象 value_dict = ast.literal_eval(row['values']) # 把字典里的所有值追加到结果列表 values.extend(value_dict.values()) # 输出符合要求格式的结果 print(f"values = [{','.join(values)}]")
关键说明
ast.literal_eval比原生eval更安全,能避免恶意代码注入风险,专门用于解析字符串形式的Python数据结构。extend()方法会自动处理单键和多键字典,把每个值逐个添加到列表中,无需额外判断。
内容的提问来源于stack exchange,提问作者adiSF
相关产品推荐
相关产品推荐

