ロケールに応じてpython curses.ascii?
質問
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分類を使用しても問題ないと思います。それは、呪いとコンソールの配置が実際に適切に表示するものを扱っていないかもしれません。
表示可能であっても、アプリケーションで許容できるものと許容できないものについても考慮する必要があります。
所属していません StackOverflow