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

如何将CSV中姓名列转换为JSON的嵌套字段结构?

我来帮你搞定这个需求!要把CSV里的NAME列转换成包含last_name、prefix、first_name的嵌套JSON对象,我们不能只做简单的字符串拆分,得专门写一个姓名解析逻辑来处理不同格式和缺失值的情况。

实现思路

  1. 编写一个姓名解析函数,覆盖三种场景:完整姓名(姓氏, 称谓. 名字)、缺失值、以及格式不完整的情况。
  2. 针对称谓全称转缩写的需求(比如Doctor转Dr.),添加一个映射表来统一格式。
  3. 把解析后的结果包装成你需要的列表嵌套结构,替换原代码里的简单拆分。

完整代码

import csv
import json

def parse_full_name(name_input):
    # 处理缺失值或空字符串的情况
    cleaned_input = name_input.strip()
    if not cleaned_input or cleaned_input == "Missing Value":
        return {
            "last_name": "Missing Value",
            "prefix": "Missing Value",
            "first_name": "Missing Value"
        }
    
    # 拆分姓氏和后续部分(只拆分一次,避免姓氏里含逗号的特殊情况)
    last_name_part, rest_part = cleaned_input.split(",", 1)
    last_name = last_name_part.strip()
    
    # 处理称谓和名字部分,按". "拆分(确保只拆分称谓后的点空格)
    rest_cleaned = rest_part.strip()
    if ". " not in rest_cleaned:
        # 没有找到称谓分隔符的情况,默认称谓缺失
        return {
            "last_name": last_name,
            "prefix": "Missing Value",
            "first_name": rest_cleaned
        }
    
    prefix_part, first_name_part = rest_cleaned.split(". ", 1)
    # 称谓全称与缩写的映射表,可根据实际需求扩展
    title_abbrev_map = {
        "Mr": "Mr.",
        "Mrs": "Mrs.",
        "Doctor": "Dr.",
        "Dr": "Dr.",
        "Ms": "Ms.",
        "Miss": "Ms.",
        "Professor": "Prof."
    }
    
    # 统一处理称谓格式:去掉可能的尾点,再匹配映射
    prefix_key = prefix_part.strip().rstrip(".")
    prefix = title_abbrev_map.get(prefix_key, f"{prefix_key}.")
    first_name = first_name_part.strip()
    
    return {
        "last_name": last_name,
        "prefix": prefix,
        "first_name": first_name
    }

with open('test.csv', 'r') as file:
    headers = next(file)
    fieldnames = headers.rstrip().split(",")
    csv_reader = csv.DictReader(file, fieldnames=fieldnames)
    
    for row_dict in csv_reader:
        # 解析姓名并包装成指定的列表嵌套结构
        parsed_name = parse_full_name(row_dict['name'])
        row_dict['name'] = [parsed_name]
        # 输出格式化后的JSON
        print(json.dumps(row_dict))

关键细节说明

  • 缺失值处理:当NAME列是空值或标记为Missing Value时,三个字段都会设为Missing Value,符合你的需求。
  • 安全拆分:拆分姓氏时只拆分一次逗号,避免像O'Neil, Jr., Mr. Mike这类带逗号的姓氏被错误拆分。
  • 称谓映射:通过title_abbrev_map可以轻松扩展更多称谓的缩写规则,比如把Professor转成Prof.。
  • 格式容错:如果遇到没有. 分隔符的姓名(比如Smith, Bob),会默认称谓缺失,名字设为后续内容,提高代码的鲁棒性。

用你的测试CSV运行这段代码,就能得到你期望的嵌套JSON输出啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:59:25