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

Python读取含多元素列的CSV文件异常问题求助

解决CSV文件解析异常的问题

嘿,我一眼就发现问题所在啦!你的CSV文件是用**分号(;)**作为列分隔符的,但你在代码里却指定了逗号(,)作为分隔符,这就导致解析器把整行内容当成单个字段,直到碰到最后一行里的逗号才错误拆分,于是出现了你看到的混乱输出。

先回顾下你的原始CSV内容:

id;name;duration;predecessors;
10;A;7;;
20;B;10;10;
25;B2;3;10;
30;C;5;10;
40;D;5;20,30, 25;

你之前使用的代码:

csv_file = open(path_to_csv, 'r')
csv_file_reader = csv.reader(csv_file, delimiter=',')
first_row = True
for row in csv_file_reader :
    if not first_row:
        print(row)
    else :
        first_row = False

得到的异常输出:

['10;A;7;;']
['20;B;10;10;']
['25;B2;3;10;']
['30;C;5;10;']
['40;D;5;20', '30', ' 25;']

核心修复:修改分隔符为分号

你只需要把csv.reader的delimiter参数改成';',解析器就能正确识别CSV的列分隔了。修正后的代码如下(顺便帮你补上了缺失的csv模块导入,还优化了文件读取的方式):

import csv

path_to_csv = "你的文件路径.csv"
# 使用with语句自动管理文件,避免忘记关闭
with open(path_to_csv, 'r') as csv_file:
    csv_file_reader = csv.reader(csv_file, delimiter=';')
    # 直接读取表头,替代原来的first_row变量,更简洁
    headers = next(csv_file_reader)
    for row in csv_file_reader:
        print(row)

运行后你会得到正确的解析结果:

['10', 'A', '7', '', '']
['20', 'B', '10', '10', '']
['25', 'B2', '3', '10', '']
['30', 'C', '5', '10', '']
['40', 'D', '5', '20,30, 25', '']

额外优化:拆分predecessors字段(可选)

如果之后你需要把predecessors里的多个ID转换成干净的列表,可以再加上一段处理逻辑,自动去掉空格并拆分:

import csv

path_to_csv = "你的文件路径.csv"
with open(path_to_csv, 'r') as csv_file:
    csv_file_reader = csv.reader(csv_file, delimiter=';')
    headers = next(csv_file_reader)
    for row in csv_file_reader:
        # 处理predecessors字段
        pred_str = row[3].strip()
        if pred_str:
            # 拆分并去掉每个ID的空格
            predecessors = [id.strip() for id in pred_str.split(',')]
        else:
            predecessors = []
        row[3] = predecessors
        print(row)

这样输出会变成更易用的格式:

['10', 'A', '7', [], '']
['20', 'B', '10', ['10'], '']
['25', 'B2', '3', ['10'], '']
['30', 'C', '5', ['10'], '']
['40', 'D', '5', ['20', '30', '25'], '']

内容的提问来源于stack exchange,提问作者user9601710

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:21:26