Python读取最后一列值数量可变的CSV文件并转指定格式字典的方法
实现方法
你这个CSV的特点是前两列长度固定,第三列开始是可变长度的餐食项,所以不要直接用默认按表头长度匹配字段的csv.DictReader,按以下逻辑处理即可:
- 先读取第一行作为表头,确认固定字段的位置
- 逐行拆分内容后,前两个元素分别对应
name和postcode,剩余所有元素都归到meals的列表中 - 额外注意去除字段前后的空格,以及把邮编转为整数类型
代码示例(Python)
版本1:使用csv标准库(更稳妥,支持内容含逗号的特殊场景)
import csv result = [] # 替换成你的CSV文件路径 with open('data.csv', 'r', encoding='utf-8', newline='') as f: # skipinitialspace=True 自动去除逗号后的空格 reader = csv.reader(f, skipinitialspace=True) # 跳过表头行 next(reader) for row in reader: if not row: continue current_dict = { 'name': row[0], 'postcode': int(row[1]), 'meals': row[2:] } result.append(current_dict) # 可以按你的需求单独取出每个字典: d_john, d_mary, d_david = result
版本2:手动拆分(轻量场景快速实现)
result = [] with open('data.csv', 'r', encoding='utf-8') as f: # 跳过表头 f.readline() for line in f: line = line.strip() if not line: continue parts = [p.strip() for p in line.split(',')] result.append({ 'name': parts[0], 'postcode': int(parts[1]), 'meals': parts[2:] })
运行后得到的字典和你给出的预期输出完全一致。
内容的提问来源于stack exchange,提问作者user17273692
相关产品推荐
相关产品推荐

