Domanda

Il modulo curses.ascii ha alcune belle funzioni definite, che consentono ad esempio di riconoscere quali caratteri sono stampabili ( curses.ascii.isprint (ch) ).

Tuttavia, codici di caratteri diversi possono essere stampabili a seconda dell'impostazione della locale utilizzata. Ad esempio, ci sono alcuni caratteri polacchi:

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

Mi chiedo, c'è un modo migliore per dire se un numero rappresenta un carattere stampabile rispetto a quello usato nel modulo curses.ascii :

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

che è una specie di locale ostile.

È stato utile?

Soluzione

Se converti il ??personaggio in un unicode, puoi usare unicodedata:

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

Altri suggerimenti

Beh, si chiama curses.ascii, quindi usare le regole ASCII per ciò che è stampabile non dovrebbe essere una sorpresa. Se stai usando un codice ISO a 8 bit o stai operando da una tabella codici conosciuta, avrai bisogno di regole che corrispondano a quali sono i codici effettivi e i loro display.

Penso che usare caratteri Unicode e classificazioni Unicode standard vada bene. Questo potrebbe non riguardare ciò che le maledizioni e la disposizione della console verranno effettivamente visualizzate correttamente.

È necessario considerare anche ciò che è accettabile e inaccettabile per l'applicazione, anche se visualizzabile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top