如何 clean/get 嵌套字典中的数据

How to clean/get data from nested dictionary

给定这本字典: {'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'}}

我如何创建一个函数,在其中获取所有文本示例,以便我可以清理它们(使用 lower 和 unicode)并获得与文本的干净版本具有相同格式的字典?

我知道我必须使用循环,但我无法获取所有文本,而不仅仅是第一组示例。

以下使用 translate 删除(有点复杂的)嵌套列表理解中的重音符号:

import copy

# data = {'intents': ...}

tt = str.maketrans('áéíóúñ', 'aeioun') # translate table

intents = [
             {
                'intent': d['intent'],
                'examples': [{'text': example['text'].lower().translate(tt)} for example in d['examples']]
             }
          for d in data['intents']]

data_clean = copy.deepcopy(data) # (deep) copy the original dict
data_clean['intents'] = intents # replace

print(data_clean)

输出:

{
  "intents": [
    {
      "intent": "CambiarDireccion",
      "examples": [
        {"text": "compre la lavadora, pero me equivoque y no cambie la direccion de despacho"},
        {"text": "podrian enviarla a otra direccion"},
        {"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 direccion de envio y no puedo , como lo hago"},
        {"text": "holaa! llegaria a mas tardar el domingo? lo quiero enviar a otra direccion,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": "como puedo cambiar de destino de mi compra?"},
        {"text": "coloque mal la direccion"},
        {"text": "acabo de aser una compra pero me equivoque de direccion me sale mi direccion anterior"},
        {"text": "quiero mudar mi direccion como hago"}
      ]
    },
    {
      "intent": "CP",
      "examples": [
        {"text": "codigo postal 1812"},
        {"text": "el cp es"},
        {"text": "el codigo postal es"},
        {"text": "cp es 1212"},
        {"text": "cp es"},
        {"text": "cp"},
        {"text": "codigo postal"}
      ]
    }
  ],
  "pagination": {"refresh_url": "/v1/workspaces/1ae2c245-76eb-44ff-7b7a-4dk6dfafac51/intents?version=2020-04-01&export=true"
  }
}