Locale에 따라 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
그것은 일종의 로케일이 아닌 것입니다.
해결책
문자를 유니 코드로 변환하면 Unicodedata를 사용할 수 있습니다.
>>> unicodedata.category(u'ą')[0] in 'LNPS'
True
다른 팁
글쎄, 그것은 curses.ascii라고 불리우므로 인쇄 가능한 것에 대한 ASCII 규칙을 사용하는 것은 놀라운 일이 아닙니다. ISO 8 비트 코드를 사용하거나 알려진 코드 페이지에서 작동하는 경우 실제 코드 및 디스플레이에 해당하는 규칙이 필요합니다.
유니 코드 문자와 표준 유니 코드 분류를 사용하는 것이 좋습니다. 그것은 단지 저주와 콘솔 배열이 실제로 올바르게 표시되는 것을 다루지 않을 수 있습니다.
표시 가능한 경우에도 응용 프로그램에 허용되고 용납 할 수없는 것에 대해서도 고려해야합니다.
제휴하지 않습니다 StackOverflow