Home > Net >  How to clean/get data from nested dictionary
How to clean/get data from nested dictionary

Time:11-29

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.

CodePudding user response:

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"
  }
}
  • Related