A veces tengo cadenas con caracteres extraños. No son visibles en el navegador, pero son parte de la cadena y se cuentan en len(). ¿Cómo puedo deshacerme de él? Strip() borra el espacio normal pero no los signos.Python: cómo eliminar signos ocultos de la cadena?
Respuesta
conjunto Collect de caracteres que desea activar y eliminar el resto como esto
import re
text = re.sub("[^a-z0-9]+","", text, flags=re.IGNORECASE)
que se eliminarán todos los caracteres que no sean de A a Z, A a la Z y de 0 a 9.
Uso las categorías de caracteres del módulo string
. Si desea permitir que todos los caracteres imprimibles, puede hacerlo
from string import printable
new_string = ''.join(char for char in the_string if char in printable)
Sobre la respuesta es usted, usted puede hacer esto con re.sub
también:
new_string = re.sub("[^{}]+".format(printable), "", the_string)
Además, si usted quiere ver todos los caracteres en una cadena, incluso los no imprimibles, siempre se puede hacer
print repr(the_string)
que mostrará cosas como \x00
de caracteres no imprimibles.
Seguramente esta es la respuesta correcta. – dotancohen
La respuesta de segundos funcionó como el encanto, gracias. – Yehonatan
Las expresiones regulares son una herramienta buena y muy universal para todo tipo de análisis de cadenas. Si la velocidad es un problema, el método "traducir" de la clase de cadena también puede ayudarlo.
En primer lugar, definir una ('identidad') de mapeo, que no va a cambiar nada:
mapping = map(chr, range(256))
si desea reemplazar cada "a" por una "b", modifica su asignación
mapping[ord('a')] = 'b'
Ahora se construye la tabla para el método de "traducir":
table = "".join(mapping)
y
print "abc".translate(table)
imprime "bbc".
Si realmente quiere eliminar la "a", que no modifique el mapeo anterior, construir la tabla y luego llamar traduce de la siguiente manera:
print "abc".translate(table, "a")
le da "BC".
Una vez construida la tabla, el método de traducción es muy rápido.
Así que en su caso se puede modificar la asignación de tal manera que todos sus caracteres no deseados se asignan a un espacio en blanco
mapping = map(chr, range(256))
table = "".join(" " if c in unwanted_chars else c for c in map(chr, range(256)))
y utilizar len("my string".translate(table).trim())
que ignora los caracteres no deseados al principio y al final de la cadena.
O utiliza len("my string".translate(table, unwanted_chars))
que ignorará todos los caracteres no deseados.
Agradable. +1 mañana cuando tenga votos de nuevo. Pensé en traducir, pero era demasiado vago para buscar la sintaxis. – agf
- 1. ¿Está bien eliminar los signos iguales de una cadena base64?
- 2. ¿Cómo eliminar signos diacríticos del texto?
- 3. ¿Cómo puedo eliminar la puntuación de una cadena?
- 4. ¿Cómo eliminar todos los signos diacríticos de un archivo?
- 5. Cómo eliminar números de la cadena usando Regex.Replace?
- 6. ¿Cuál es la mejor manera de eliminar acentos en una cadena unicode de Python?
- 7. Python eliminar las partes de la cadena por el índice
- 8. Java - ¿Cómo dividir una cadena en los signos más?
- 9. Cómo eliminar un carácter de una cadena usando Python?
- 10. ¿Cómo puedo saber que mi cadena contiene signos diacríticos?
- 11. Python, eliminar todas las apariciones de cadena en la lista
- 12. Python Eliminar El último carácter de la cadena y devolverlo
- 13. ¿Cómo eliminar símbolos de una cadena con Python?
- 14. Cómo eliminar cualquier URL dentro de una cadena en Python
- 15. Cadena Unicode eliminar char de la cadena
- 16. Eliminar números de la cadena
- 17. Eliminar cadena de la cadena jquery
- 18. ¿Cómo eliminar todo menos letras, números, espacio, exclamación y signo de interrogación de la cadena?
- 19. Eliminar \ r de la cadena
- 20. Crear argumentos ocultos con Python argparse
- 21. Eliminar barras diagonales inversas de una cadena en Python
- 22. Eliminar caracteres no ASCII de una cadena usando python/django
- 23. Pasar la cadena incluye signos de dólar para -Restaurar la variable
- 24. Eliminar cada elemento n de la cadena
- 25. cómo eliminar la última palabra de la cadena usando JavaScript
- 26. Eliminar subcadena usando Python
- 27. Ruby eliminar líneas vacías de la cadena
- 28. PHP Eliminar URL de la cadena
- 29. Método de Python para eliminar la iterabilidad
- 30. Cómo detectar caracteres ocultos en cadena (por ejemplo, espacio de ancho cero) durante la depuración
Ver esta solución: http://stackoverflow.com/questions/92438/stripping-non-printable-characters-from-a-string-in-python –