Regresar

Cómo limpiar un string para JSON con Python

por Jorge, 18-Mar-2023

Si alguna vez has intentado convertir un string en formato JSON en Python, es posible que te hayas encontrado con errores causados por caracteres no compatibles con el formato. Esto puede ser frustrante, especialmente cuando estás trabajando con una gran cantidad de datos y necesitas que todo esté en formato JSON para poder procesarlo correctamente.

Hoy en día, tuve ese problema y pasé varias horas tratando de solucionarlo. Afortunadamente, me puse en contacto con el equipo de chatgpt, y me proporcionaron una función útil que me permitió limpiar el string y asegurarme de que fuera compatible con JSON.

Aquí está la función que me proporcionaron:


import re
import json

def clean_string_for_json(s):
    # Remove page breaks and other non-ASCII characters
    s = re.sub(r'[^\x00-\x7F]+', '', s)
    s = s.replace('\n', '').replace('\r', '')

    # Load string as JSON to check for compatibility
    try:
        json.loads(s)
    except ValueError:
        # Replace non-compliant characters with a space
        s = re.sub(r'[^\x00-\x7F]+', ' ', s)

    return s

Esta función primero elimina caracteres no compatibles con el formato JSON utilizando una expresión regular. Luego, elimina los saltos de línea y los caracteres de retorno de carro. Finalmente, comprueba si el string se puede cargar como JSON. Si el string no se puede cargar como JSON, la función reemplaza los caracteres no compatibles con un espacio.

Con esta función, pude limpiar mis strings problemáticos y asegurarme de que estuvieran en formato JSON compatible. Espero que esta función también te resulte útil en tu trabajo con JSON en Python.