質問

curses.ascii モジュールにはいくつかの便利な関数が定義されており、たとえば、どの文字が印刷可能かを認識できます( curses.ascii.isprint(ch))。

ただし、使用されているロケール設定に応じて、異なる文字コードを印刷できます。たとえば、特定のポーランド語の文字があります:

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

不思議です、数字が印刷可能な文字を表すかどうかを判断するより良い方法はありますか? curses.ascii モジュールで使用されるもの:

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

これは一種のロケールにやさしいです。

役に立ちましたか?

解決

文字をUnicodeに変換する場合、unicodedataを使用できます:

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

他のヒント

まあ、それはcurses.asciiと呼ばれるので、印刷可能なものにASCIIルールを使用しても驚くことではありません。 ISO 8ビットコードを使用している場合、または既知のコードページから操作している場合、実際のコードとその表示に対応するルールが必要になります。

Unicode文字と標準のUnicode分類を使用しても問題ないと思います。それは、呪いとコンソールの配置が実際に適切に表示するものを扱っていないかもしれません。

表示可能であっても、アプリケーションで許容できるものと許容できないものについても考慮する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top