如何从Python嵌套字典中提取并清洗所有text示例且保留原格式
实现方案
核心逻辑是通过两层嵌套循环覆盖所有意图下的示例文本,同时对原始字典做深拷贝避免修改原数据,保证返回的字典结构和原始结构完全一致。
完整代码实现
import copy import unicodedata def clean_text(raw_text: str) -> str: # 1. 转换为全小写 lower_text = raw_text.lower() # 2. Unicode标准化(NFC格式统一重音等特殊字符的编码) # 若需要去除重音可额外添加过滤逻辑:unicodedata.normalize('NFD', lower_text).encode('ascii', 'ignore').decode('utf-8') normalized_text = unicodedata.normalize('NFC', lower_text) return normalized_text def process_intent_dict(original_dict: dict) -> dict: # 深拷贝原始字典,保证原数据不被修改,返回结构和原结构完全一致 processed_dict = copy.deepcopy(original_dict) # 第一层循环:遍历所有意图项 for intent_item in processed_dict['intents']: # 第二层循环:遍历当前意图下的所有示例文本 for example in intent_item['examples']: # 替换为清洗后的文本 example['text'] = clean_text(example['text']) return processed_dict # 调用示例 if __name__ == '__main__': # 填入你提供的原始字典 raw_dict = {'intents': [{'intent': 'CambiarDireccion', 'examples': [{'text': 'compre la lavadora, pero me equivoque y no cambié la dirección de despacho'}, {'text': 'podrían enviarla a otra dirección'}, {'text': 'sin querer compre en otra direccion como la mudo'}, {'text': 'efectue la compra en la direccion incorrecta'}, {'text': 'necesito mudar la direccion'}, {'text': 'necesito mudar mi direccion'}, {'text': 'quiero mudar mi direccion'}, {'text': 'quiero cambiar mi direccion cono puedo hacer'}, {'text': 'Quiero cambiar la dirección de envío y no puedo , como lo hago'}, {'text': 'Holaa! Llegaria a más tardar el Domingo? Lo quiero enviar a otra dirección,en las Rejas'}, {'text': 'compre en la direccion equivocada quiero cambiarla'}, {'text': 'como puedo mudar mi direccion'}, {'text': 'como puedo hacer para cambiar la direccion'}, {'text': 'Cómo puedo cambiar de destino de mi compra?'}, {'text': 'Coloqué mal la direccion'}, {'text': 'acabo de aser una compra pero me equivoque de dirección me sale mi dirección anterior'}, {'text': 'quiero mudar mi direccion como hago'}]}, {'intent': 'CP', 'examples': [{'text': 'código postal 1812'}, {'text': 'el cp es'}, {'text': 'el código postal es'}, {'text': 'cp es 1212'}, {'text': 'cp es'}, {'text': 'cp'}, {'text': 'código postal'}]}], 'pagination': {'refresh_url': '/v1/workspaces/1ae2c245-76eb-44ff-7b7a-4dk6dfafac51/intents?version=2020-04-01&export=true'}} result = process_intent_dict(raw_dict) print(result)
常见问题说明
之前只能获取到第一组examples文本,是因为缺少嵌套循环:必须先遍历intents列表下的每一个意图对象,再遍历每个意图独立的examples列表,才能覆盖所有的示例文本。
内容的提问来源于stack exchange,提问作者Francisco Pataquiva
相关产品推荐
相关产品推荐

