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

使用csv.DictReader()存储数据至列表时字典生成异常问题

问题:csv.DictReader读取CSV生成字典格式异常

现象

使用csv.DictReader()读取CSV文件并将每行转为字典存入列表时,生成的字典不符合预期:所有表头被合并成单个字符串作为键,对应的值也是整行拼接的字符串,而非每个表头对应各自的字段值。

原代码:

with open(report_object_items_filepath, 'r',encoding='utf-8') as csvf:
    #load csv file data using csv library's dictionary reader
    csvReader = csv.DictReader(csvf)

    #convert each csv row into python dict
    for row in csvReader:
        #adding (row):python dict to json array
        jsonArray.append(row)

当前错误输出:

{'FILE_ID;DASHBOARD_TITLE;OBJECT_TITLE;OBJECT_TYPE;LISTEN_TO_FILTER;ITEM_NAME;COLUMN_ORDER;OBJECT_ROW;OBJECT_COLUMN;OBJECT_WIDTH;OBJECT_HEIGHT;DATA_ITEM_FEATURES;SORT_ITEM_YN;REFERENCE_TREND_LINE;ITEM_CONDITION;AGGREGATION;DIMENSION_GROUP': 'TDSfile3;Dashboard 1;Sheet 1;;Gender;AdventureWorks_Customers.AnnualIncome;1;50000;30778;52422;24500;measure;;;;Sum;'}

预期正确输出:

{'FILE_ID': 'TDSfile3', 'DASHBOARD_TITLE': 'Dashboard 1', 'OBJECT_TITLE': 'Sheet 1', 'OBJECT_TYPE': '', 'LISTEN_TO_FILTER': 'Gender', 'ITEM_NAME': 'AdventureWorks_Customers.AnnualIncome', 'COLUMN_ORDER': '1.0', 'OBJECT_ROW': '50000', 'OBJECT_COLUMN': '30778', 'OBJECT_WIDTH': '52422', 'OBJECT_HEIGHT': '24500', 'DATA_ITEM_FEATURES': 'measure', 'SORT_ITEM_YN': '', 'REFERENCE_TREND_LINE': '', 'ITEM_CONDITION': '', 'AGGREGATION': 'Sum', 'DIMENSION_GROUP': ''}

原因

csv.DictReader默认使用**逗号(,)作为字段分隔符,但你的CSV文件实际是用分号(;)**分隔字段的,导致解析时无法正确拆分列,把整行内容当成了单个键值对。

解决方案

创建csv.DictReader对象时,显式指定delimiter参数为分号(';'),让解析器按分号拆分字段。

修改后的代码:

with open(report_object_items_filepath, 'r', encoding='utf-8') as csvf:
    # 指定分号作为分隔符
    csvReader = csv.DictReader(csvf, delimiter=';')

    for row in csvReader:
        jsonArray.append(row)

运行修改后的代码,就能得到预期的字典格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:11:14