python curses.ascii в зависимости от локали? - PullRequest
0 голосов
/ 30 ноября 2008

В модуле curses.ascii определены некоторые приятные функции, которые позволяют, например, распознавать, какие символы могут быть напечатаны (curses.ascii.isprint(ch)).

Но различные коды символов могут быть напечатаны в зависимости от того, какая настройка локали используется. Например, есть определенные польские символы:

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

Мне интересно, есть ли лучший способ узнать, представляет ли число печатный символ, чем тот, который используется в модуле curses.ascii:

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

что-то вроде локали - недружелюбно.

Ответы [ 2 ]

4 голосов
/ 30 ноября 2008

Если вы преобразуете символ в юникод, вы можете использовать unicodedata:

>>> unicodedata.category(u'ą')[0] in 'LNPS'
True
2 голосов
/ 01 декабря 2008

Ну, это называется curses.ascii, поэтому использование правил ASCII для того, что печатается, не должно быть сюрпризом. Если вы используете 8-битный код ISO или работаете с известной кодовой страницей, вам потребуются правила, которые соответствуют фактическим кодам и их отображению.

Я думаю, что использование символов Юникода и стандартных классификаций Юникода - это хорошо. Это может не иметь отношения к тому, что проклятия и расположение консоли будут отображаться правильно.

Необходимо также учитывать, что является приемлемым и неприемлемым для приложения, даже если оно отображается.

...