如何移除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
相关产品推荐
相关产品推荐

