How to clean/get data from nested dictionary

Given this 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'}}

How can I create a function where I take the all of the text examples so I can clean clean them (using lower and unicode) and get a dictionary with the same format with the clean version of the text?

I get that I have to use a loop but I'm having trouble getting all of the texts and not just the first group of examples.

1 answer

  • answered 2021-11-29 02:57 j1-lee

    The following uses translate to remove accents inside a (a little complicated) nested list comprehension:

    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)
    

    Output:

    {
      "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"
      }
    }
    

How many English words
do you know?
Test your English vocabulary size, and measure
how many words do you know
Online Test
Powered by Examplum