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

使用open与csv.DictReader读取分号分隔csv文件结果异常

错误原因
  1. 未指定字段分隔符:csv模块默认使用逗号作为字段分隔符,你的文件采用分号分隔,导致每行内容没有被拆分,整行被识别为单个字段,因此出现{"a;A": "b;B"}的错误结果。
  2. DictReader用法不符合数据结构:csv.DictReader默认将文件第一行作为表头键,后续每一行对应一条以表头为键的记录,你通过list(dctreader)[0]仅取了第一条数据记录,没有遍历全部370行内容,自然只能得到2个条目。
解决方案

无需引入pandas,直接使用Python标准库csv.reader,指定分号为分隔符遍历所有行构造字典即可,性能满足要求。

代码示例

兼容版本(可处理空行、异常行)

import os
import csv

strpath = r"C:\Project Folder"
filename = "to_dictionary.csv"
os.chdir(strpath)

finaldct = {}
# 用with上下文管理器自动管理文件资源,无需手动关闭
with open(filename, mode="r", encoding="windows-1250") as f:
    # 指定分号为字段分隔符
    reader = csv.reader(f, delimiter=";")
    for row in reader:
        # 仅处理至少包含两列的有效行
        if len(row) >= 2:
            finaldct[row[0]] = row[1]

print(finaldct)

简洁版本(确认所有行均为标准「键;值」格式无空行时使用)

import os
import csv

strpath = r"C:\Project Folder"
filename = "to_dictionary.csv"
os.chdir(strpath)

with open(filename, mode="r", encoding="windows-1250") as f:
    finaldct = dict(csv.reader(f, delimiter=";"))

print(finaldct)

内容的提问来源于stack exchange,提问作者Soren V. Raben

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:15:05