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

Python如何将JSON中的数组按字段拆分到不同列

实现JSON数组字段拆分到不同列的正确方案

你提供的输入是字符串数组,每个元素为id: xxx, name: xxx格式的字符串,目标是将id、name两个字段拆分为独立的列存储。

原有代码的问题

  • 代码中使用的sign变量未定义,和输入的records数组无关联
  • 字符串格式化后调用.record['sign']属于语法错误,Python字符串不存在该属性或方法
  • 循环内反复对list1/list2/list3赋值,最终只会保留最后一次循环的结果,无法存储所有记录

基础实现(无需第三方库)

直接通过字符串分割提取字段值,适合固定格式的输入:

# 你的输入数组
records = [
    'id: 123, name: Sara',
    'id: 456, name: Jhon',
    'id: 789, name: Paris'
]

# 初始化两个列表分别存储id列、name列
id_column = []
name_column = []

for record in records:
    # 按逗号分割为id段、name段
    id_part, name_part = record.split(', ')
    # 提取冒号后的数值,id转为整数类型
    id_val = int(id_part.split(': ')[1])
    name_val = name_part.split(': ')[1]
    # 存入对应列
    id_column.append(id_val)
    name_column.append(name_val)

# 输出结果示例
print("id列:", id_column)
print("name列:", name_column)

鲁棒性实现(正则匹配)

如果输入字符串存在格式波动,用正则匹配提取更稳妥:

import re

records = [
    'id: 123, name: Sara',
    'id: 456, name: Jhon',
    'id: 789, name: Paris'
]

id_column = []
name_column = []
# 匹配规则:id后接数字,name后接字符
pattern = r'id: (\d+), name: (\w+)'

for record in records:
    res = re.match(pattern, record)
    if res:
        id_column.append(int(res.group(1)))
        name_column.append(res.group(2))

转表格结构(DataFrame)

如果需要后续做表格类处理,可以直接转为Pandas的DataFrame结构:

import pandas as pd

df = pd.DataFrame({
    "id": id_column,
    "name": name_column
})
print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:36:03