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

Python实现CSV转JSON:将team_members字段拆分为数组元素

解决CSV转JSON时将逗号分隔的team_members转为数组的问题

嘿,这问题我熟!你已经搞定CSV转JSON的基础流程了,就差把team_members里的逗号分隔字符串拆成独立数组元素对吧?下面给你两个靠谱的Python实现方案,按需选就行:

先把你的示例CSV内容贴出来方便对照:

demo.csv 内容:

id,team_name,team_members
123,Biology,"Ali Smith, Jon Doe"
234,Math,Jane Smith
345,Statistics ,"Matt P, Albert Shaw"
456,Chemistry,"Andrew M, Matt Shaw, Ali Smith"
678,Physics,"Joe Doe, Jane Smith, Ali S"

方案一:用Python内置csv+json模块(无额外依赖)

这个方案适合轻量场景,不需要安装第三方库,纯靠Python自带模块就能搞定:

import csv
import json

def csv_to_json_with_array(csv_file_path, json_file_path):
    converted_data = []
    # 读取CSV文件
    with open(csv_file_path, mode='r', encoding='utf-8') as csv_file:
        # 用DictReader直接把每行转为字典,键就是CSV的字段名
        csv_reader = csv.DictReader(csv_file)
        for row in csv_reader:
            # 处理team_members字段:先清理首尾空格,再拆分
            raw_members = row['team_members'].strip()
            if raw_members:
                # 按", "拆分,同时清理每个成员名字的首尾空格
                row['team_members'] = [member.strip() for member in raw_members.split(', ')]
            else:
                # 如果字段为空,转为空数组保证格式一致
                row['team_members'] = []
            converted_data.append(row)
    
    # 写入JSON文件,indent=4让格式更美观
    with open(json_file_path, mode='w', encoding='utf-8') as json_file:
        json.dump(converted_data, json_file, indent=4)

# 替换成你的文件路径
csv_to_json_with_array('demo.csv', 'output.json')

关键细节说明:

  • csv.DictReader自动映射字段名和值,省去手动处理表头的麻烦
  • 两次strip()是为了处理示例里Statistics那行的多余空格,避免拆分出无效的空字符串
  • 空的team_members字段会转为空数组,保证JSON结构的一致性

方案二:用Pandas处理(适合大数据量/已有Pandas工作流)

如果你平时已经在用Pandas处理数据,或者CSV文件很大,这个方案更高效:

import pandas as pd
import json

# 读取CSV,skipinitialspace=True自动忽略字段值前面的空格
df = pd.read_csv('demo.csv', skipinitialspace=True)

# 批量处理team_members字段:拆分字符串为列表,空值转为空数组
df['team_members'] = df['team_members'].apply(
    lambda x: [member.strip() for member in x.split(', ')] if pd.notna(x) and x.strip() else []
)

# 转成数组格式的JSON并写入文件
df.to_json('output_pandas.json', orient='records', indent=4, force_ascii=False)

关键细节说明:

  • skipinitialspace=True帮你自动处理CSV里字段值前的空格,不用手动写strip
  • apply+lambda函数快速完成批量字段转换
  • orient='records'让输出的JSON是数组格式,和方案一的结果完全一致

最终效果示例

处理后output.json里的条目会是这样的:

[
    {
        "id": 123,
        "team_name": "Biology",
        "team_members": [
            "Ali Smith",
            "Jon Doe"
        ]
    },
    {
        "id": 234,
        "team_name": "Math",
        "team_members": [
            "Jane Smith"
        ]
    }
    // 其余条目格式类似
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:50:07