puede utilizar que los caracteres ASCII son los primeros 128 queridos, a fin de obtener el número de cada personaje con ord
y tiras que si está fuera del rango
# -*- coding: utf-8 -*-
def strip_non_ascii(string):
''' Returns the string without non ASCII characters'''
stripped = (c for c in string if 0 < ord(c) < 127)
return ''.join(stripped)
test = u'éáé123456tgreáé@€'
print test
print strip_non_ascii(test)
Resultado
éáé123456tgreáé@€
[email protected]
favor tenga en cuenta que @
está incluido porque, bueno, después de todo, es un carácter ASCII. Si desea quitar un subconjunto particular (como solo números y letras mayúsculas y minúsculas), puede limitar el rango mirando a ASCII table
EDITADO: Después de leer su pregunta nuevamente, tal vez necesite escapar su código HTML, por lo que todos esos caracteres aparecen correctamente una vez renderizados. Puede usar el filtro escape
en sus plantillas.
¿Por qué quiere reemplazarlos? Si tiene el código Unicode correcto, debería mostrarlo en la página correctamente. Hagas lo que hagas, ** no ** pongas datos codificados en HTML en tu base de datos. – bobince
+1 por bobince: ¿está seguro de que quiere reemplazarlos? Solo tiene que indicarle al navegador que está utilizando Unicode agregando una metaetiqueta como '' –