"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo eliminar caracteres no imprimibles de cadenas en Python?

¿Cómo eliminar caracteres no imprimibles de cadenas en Python?

Publicado el 2024-11-09
Navegar:629

How to Remove Non-Printable Characters from Strings in Python?

Eliminación de caracteres no imprimibles de una cadena en Python

A diferencia de Perl, Python carece de clases de expresiones regulares POSIX, lo que dificulta su detección y eliminar caracteres no imprimibles usando expresiones regulares.

Entonces, ¿cómo puedes lograr esto en Python?

Un enfoque es aprovechar el módulo de datos unicode. La función unicodedata.category clasifica los caracteres Unicode en varias categorías. Por ejemplo, los caracteres categorizados como Cc (control) representan caracteres no imprimibles.

Utilizando este conocimiento, puedes construir una clase de caracteres personalizada que coincida con todos los caracteres de control:

import unicodedata
import re
import sys

all_chars = (chr(i) for i in range(sys.maxunicode))
categories = {'Cc'}
control_chars = ''.join(c for c in all_chars if unicodedata.category(c) in categories)

control_char_re = re.compile('[%s]' % re.escape(control_chars))

def remove_control_chars(s):
    return control_char_re.sub('', s)

Esta función elimina efectivamente todos los caracteres ASCII no imprimibles de la cadena de entrada.

Como alternativa, puede usar el método string.printable integrado de Python para filtrar caracteres no imprimibles. Sin embargo, este método excluye los caracteres Unicode, por lo que es posible que no se adapte a todos los casos de uso.

Para manejar caracteres Unicode, puede expandir la clase de caracteres en la expresión regular de la siguiente manera:

control_chars = ''.join(map(chr, itertools.chain(range(0x00,0x20), range(0x7f,0xa0))))

Esta clase de caracteres extendida abarca los caracteres de control básicos junto con caracteres Unicode comunes no imprimibles.

Al modificar la función remove_control_chars en consecuencia, puede manejar con éxito Caracteres no imprimibles tanto ASCII como Unicode.

Declaración de liberación Este artículo se reimprime en: 1729551315 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

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