You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取最后一列值数量可变的CSV文件并转指定格式字典的方法

实现方法

你这个CSV的特点是前两列长度固定,第三列开始是可变长度的餐食项,所以不要直接用默认按表头长度匹配字段的csv.DictReader,按以下逻辑处理即可:

  1. 先读取第一行作为表头,确认固定字段的位置
  2. 逐行拆分内容后,前两个元素分别对应name和postcode,剩余所有元素都归到meals的列表中
  3. 额外注意去除字段前后的空格,以及把邮编转为整数类型

代码示例(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 03:54:03