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