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
相关产品推荐
相关产品推荐

