Question

Le module curses.ascii a quelques fonctions définies qui permettent, par exemple, de reconnaître les caractères imprimables ( curses.ascii.isprint (ch) ).

Toutefois, différents codes de caractère peuvent être imprimables en fonction des paramètres régionaux utilisés. Par exemple, il existe certains caractères polonais:

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

Je me demande s'il existe un meilleur moyen de savoir si un nombre représente un caractère imprimable, alors celui utilisé dans le module curses.ascii :

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

ce qui est peu respectueux de l'environnement.

Était-ce utile?

La solution

Si vous convertissez le caractère en unicode, vous pouvez utiliser unicodedata:

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

Autres conseils

Eh bien, cela s’appelle curses.ascii. L’utilisation de règles ASCII pour les éléments imprimables ne devrait donc pas être une surprise. Si vous utilisez un code ISO 8 bits ou si vous utilisez une page de codes connue, vous aurez besoin de règles correspondant à la nature des codes et de leurs affichages.

Je pense que l’utilisation de caractères Unicode et de classifications Unicode standard convient parfaitement. Cela pourrait ne pas traiter de ce que les maudits et la disposition de la console vont réellement afficher correctement.

Il faut également prendre en compte ce qui est acceptable et non acceptable pour l'application, même s'il est affichable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top