0

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

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

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

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

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

これは一種のロケールフレンドリーではありません。

4

2 に答える 2

4

文字を Unicode に変換すると、unicodedata を使用できます。

>>> unicodedata.category(u'ą')[0] in 'LNPS'
True
于 2008-11-30T12:31:09.460 に答える
2

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

Unicode 文字と標準の Unicode 分類を使用しても問題ないと思います。それは、curses とコンソールの配置が実際に適切に表示しようとしているものを処理しない可能性があります。

また、表示可能であっても、アプリケーションにとって何が受け入れられ、何が受け入れられないかについても考慮する必要があります。

于 2008-12-01T05:11:46.040 に答える