Eliminación selectiva de caracteres que no son ASCII
Trabajar con datos textuales a menudo implica la necesidad de eliminar caracteres que no son ASCII, preservando al mismo tiempo ciertos símbolos como espacios y períodos. Si bien los métodos de filtrado básicos pueden eliminar todos los caracteres que no sean ASCII, esto puede no ser deseable en algunos casos.
Consideremos el siguiente código:
def onlyascii(char):
if ord(char) 127: return ''
else: return char
Este código elimina todos los caracteres con valores ASCII inferiores a 48 o superiores a 127, eliminando eficazmente del texto los caracteres que no sean ASCII. Sin embargo, también elimina espacios (ASCII 32) y puntos (ASCII 46).
Para eliminar selectivamente caracteres que no son ASCII y al mismo tiempo conservar espacios y puntos, podemos aprovechar el módulo string.printable de Python:
import string
printable = set(string.printable)
filtered_data = filter(lambda x: x in printable, data)
El conjunto string.printable contiene todos los caracteres imprimibles del sistema, incluidos dígitos, letras, símbolos, espacios y puntos. Usando este conjunto como filtro, podemos eliminar todos los caracteres no imprimibles de la cadena.
Por ejemplo, si tenemos la cadena "some\x00string. with\x15 caracteres divertidos":
s = "some\x00string. with\x15 funny characters"
''.join(filter(lambda x: x in printable, s))
El resultado será:
'somestring. with funny characters'
Este método elimina eficazmente los caracteres que no son ASCII y al mismo tiempo conserva espacios y puntos, lo que proporciona una cadena limpia para su posterior procesamiento.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3