Estoy tratando de hacer coincidir un valor de un archivo json en mi código python con otro valor de otra llamada API dentro del mismo código. Los valores son básicamente los mismos, pero no coinciden porque a veces los caracteres especiales o el espacio final / final causan un problema.

Digamos:

Valor en el primer archivo json:

json1['org'] = google, LLC    

Valor en el segundo archivo json:

json2['org'] = Google-LLC

Intenté usar un operador in en el código pero no funciona. No estoy seguro de cómo puedo inculcar regex en este.

Entonces escribo una declaración if como esta:

if json1['org'] in json2['org']:
    # *do something*
else:
    # _do the last thing_

Simplemente sigue saltando en la declaración else a pesar de que son lo mismo.

Si los valores json son iguales independientemente de los caracteres especiales y el espacio, debe coincidir e ingresar la instrucción if.

-1
Moh 27 sep. 2019 a las 01:31

1 respuesta

La mejor respuesta

Puede eliminar todos los 'caracteres / espacios especiales' y comparar los valores:

import string
asciiAndNumbers = string.ascii_letters + string.digits

json1 = {'org': "google, LLC"}
json2 = {'org': "Google-LLC"}


def normalizedText(text):
    # We are just allowing a-z, A-Z and 0-9 and use lowercase characters
    return ''.join(c for c in text if c in asciiAndNumbers).lower()

j1 = normalizedText(json1['org'])
j2 = normalizedText(json2['org'])

print (j1)
print (j1 == j2)

Huellas:

googlellc
True
1
Maurice Meyer 26 sep. 2019 a las 22:42