Python의 String에 왜 인쇄 할 수없는 캐릭터가 포함되어 있습니까?

StackOverflow https://stackoverflow.com/questions/418176

  •  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.        |
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top