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

Python将含多值tags的CSV转JSON格式错误的修复方法

问题根源
  • 默认csv.DictReader以逗号作为列分隔符,你的tags字段存储的是类JSON数组格式的字符串,内容中包含的逗号也被识别为列分隔符,导致多标签行被错误拆分,超出表头的部分自动归入null键下。
  • 读取到的tags值是未解析的原始字符串,自带[、]、多余引号等符号,没有做结构化解析。
修复方法

核心调整两点:

  1. 读取CSV每行时,固定取第一个元素作为id,把该行剩余所有内容重新拼接为完整的tags原始字符串,避免标签内的逗号被误判为列分隔符。
  2. 用json.loads()把拼接好的tags字符串解析为原生Python数组,过滤掉空字符串的无效标签,将[""]这类空标签场景统一处理为空数组。

修复后的完整可运行代码:

import csv
import json


def make_json(csvFilePath, jsonFilePath):
    data = {}
    with open(csvFilePath, encoding='utf-8') as csvf:
        # 跳过表头行
        next(csvf)
        csvReader = csv.reader(csvf)
        for row in csvReader:
            row_id = row[0]
            # 拼接剩余所有列内容,还原完整tags字符串
            raw_tags_str = ','.join(row[1:])
            # 解析标签数组,过滤空值
            tags_list = [tag for tag in json.loads(raw_tags_str) if tag]
            data[row_id] = {
                "id": row_id,
                "tags": tags_list
            }

    with open(jsonFilePath, 'w', encoding='utf-8') as jsonf:
        json.dump(data, jsonf, indent=4, ensure_ascii=False)


# 替换为你的实际文件路径
csvFilePath = r'aaa.CSV'
jsonFilePath = r'bbb.json'
make_json(csvFilePath, jsonFilePath)

运行后得到的正确JSON输出格式如下:

{
    "403744": {
        "id": "403744",
        "tags": []
    },
    "403745": {
        "id": "403745",
        "tags": [
            "phsecurity"
        ]
    },
    "403750": {
        "id": "403750",
        "tags": [
            "unit-testing",
            "testing",
            "boolean"
        ]
    },
    "403757": {
        "id": "403757",
        "tags": []
    },
    "403759": {
        "id": "403759",
        "tags": [
            "object-oriented",
            "architectural-patterns"
        ]
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:39:40