Pregunta

El módulo curses.ascii tiene algunas funciones agradables definidas, que permiten, por ejemplo, reconocer qué caracteres son imprimibles ( curses.ascii.isprint (ch) ).

Pero, los códigos de caracteres diferentes pueden imprimirse según la configuración regional que se esté utilizando. Por ejemplo, hay ciertos caracteres polacos:

>>> ord('a')
97
>>> ord('ą')
177
>>> 

Me pregunto, ¿hay una mejor manera de saber si un número representa un carácter imprimible que el que se usa en el módulo curses.ascii :

def isprint(c): return _ctoi(c) >= 32 and _ctoi(c) <= 126

que es poco amigable con el entorno local.

¿Fue útil?

Solución

Si convierte el carácter a unicode, puede usar unicodedata:

>>> unicodedata.category(u'ą')[0] in 'LNPS'
True

Otros consejos

Bueno, se llama curses.ascii, por lo que usar reglas ASCII para lo que se puede imprimir no debería ser una sorpresa. Si está utilizando un código ISO de 8 bits o está operando desde una página de códigos conocida, necesitará reglas que correspondan a los códigos reales y sus pantallas.

Creo que está bien usar caracteres Unicode y clasificaciones Unicode estándar. Eso podría no tratar con lo que las maldiciones y la disposición de la consola realmente se mostrarán correctamente.

También debe tenerse en cuenta lo que es aceptable e inaceptable para la aplicación, incluso si se puede visualizar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top