Python의 String에 왜 인쇄 할 수없는 캐릭터가 포함되어 있습니까?
-
03-07-2019 - |
문제
하나의 질문에 두 개의 문자열이 있습니다.
첫째, Python 2.6에서 :
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
문자열의 끝을 보면 ' x0b x0c'가 아픈 덤프처럼 튀어 나오는 것을 찾을 수 있습니다. 왜 거기에 있습니까? 호주 설정에 기계 세트를 사용하고 있으므로 악센트가있는 캐릭터 등이 없어야합니다.
다음 으로이 코드를 실행해보십시오.
for x in string.printable: print x,
print
for x in string.printable: print x
첫 번째 줄은 공간으로 분리 된 모든 캐릭터를 성공적으로 인쇄합니다. 두 개의 이상한 캐릭터는 남성과 여성의 상징으로 나타납니다.
두 번째 줄은 마지막으로 분리 된 라인 피드로 분리 된 모든 문자를 성공적으로 인쇄합니다. 남성 기호 인쇄; 여성 기호는 누락 된 문자 (상자)로 대체됩니다.
나는 Python이 성별 편향을 의도하지 않았다고 확신합니다. 그래서 차이점을 제공하는 것은 무엇입니까?
해결책
"인쇄용"에는 "화면에 표시 될 수 있습니다"에 차이가 있습니다. 터미널은 낮은 ASCII 프린터 컨트롤 코드 0x0B 및 0x0C를 수컷 및 암컷 기호로 표시합니다. 왜냐하면 글꼴의 지수에 포함되어 있기 때문입니다. 이 문자는 수직 테이블 레이터로 더 정확하게 설명되어 있으며 피드 문자를 형성합니다. 이 두 문자는 t r 및 n과 함께 인쇄 할 수 있으며 프린터에 잘 정의 된 것들을 잘 정의합니다.
다른 팁
cmd.exe 내에서 :
>>> print '\x0b'
♂
>>> print '\x0c'
♀
>>> print '\f' # form feed
♀
>>> print '\v' # vertical tab
♂
>>>
내부 EMACS :
>>> print '\f\v'
^L^K
여기에서 발췌 한 내용이 있습니다 형식 (5)'남자 페이지 :
| Sequence | Character | Terminal Action | |----------+--------------+---------------------------------------------| | \f | form-feed | Moves the printing position to the initial | | | | printing position of the next logical page. | | \v | vertical-tab | Moves the printing position to the start of | | | | the next vertical tab position. If there | | | | are no more vertical tab positions left on | | | | the page, the behavior is undefined. |
제휴하지 않습니다 StackOverflow