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

如何移除JSON元素并重新格式化?求Python/正则方案

解决方案:清理类JSON数据中的question字段

方案一:Python原生对象处理

如果你的数据已经能解析为Python字典/列表对象(比如用ast.literal_eval解析字符串形式的类JSON数据),直接提取元组的第二个元素即可:

示例代码

import ast

# 假设原始类JSON字符串
raw_data_str = '''
[
    {"question": (0, 'Who invented the light bulb?'), "answer": "Thomas Edison"},
    {"question": (1, 'What is the capital of France?'), "answer": "Paris"}
]
'''

# 解析为Python对象
raw_data = ast.literal_eval(raw_data_str)

# 批量清理question字段
cleaned_data = []
for item in raw_data:
    cleaned_item = item.copy()
    # 取元组的第二个元素作为新的question值
    cleaned_item["question"] = item["question"][1]
    cleaned_data.append(cleaned_item)

# 查看结果
print(cleaned_data)

如果原始数据已经是Python对象(比如enumerate生成后直接保存的列表),跳过ast.literal_eval步骤直接处理即可。

方案二:正则表达式替换

如果数据是纯字符串格式,无法直接解析为Python对象,用正则匹配替换目标内容:

示例代码

import re

raw_data_str = '''
{"question": (0, 'Who invented the light bulb?'), "answer": "Thomas Edison"},
{"question": (1, 'What is the capital of France?'), "answer": "Paris"}
'''

# 匹配"question": (数字, '问题文本')的格式
pattern = r'"question": \(\d+, \'([^\']+)\'\)'
# 替换为仅保留问题文本的格式
cleaned_data_str = re.sub(pattern, r'"question": \'\1\'', raw_data_str)

# 查看结果
print(cleaned_data_str)

正则说明

  • \(\d+, \':匹配括号开头、数字、逗号加空格、单引号
  • ([^\']+):捕获单引号内的所有非单引号字符(即问题文本)
  • \'\):匹配结尾的单引号和括号
  • 替换时用\1引用捕获的问题文本,重构question字段格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 20:35:04