문제

그만큼 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 비트 코드를 사용하거나 알려진 코드 페이지에서 작동하는 경우 실제 코드 및 디스플레이에 해당하는 규칙이 필요합니다.

유니 코드 문자와 표준 유니 코드 분류를 사용하는 것이 좋습니다. 그것은 단지 저주와 콘솔 배열이 실제로 올바르게 표시되는 것을 다루지 않을 수 있습니다.

표시 가능한 경우에도 응용 프로그램에 허용되고 용납 할 수없는 것에 대해서도 고려해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top