정확한 코드와 정확한 오류를 게시 했습니까? 코드가 cp437
및 utf-8
터미널 모두에 오류를 던지지 않고 작동하기 때문입니다. 어쨌든 유니 코드 문자열을 터미널에 보내기 전에이를 정당화해야합니다. 대신 길이 2의 인코딩 할 때 UTF-8 인코딩 중국어 길이 6을 가지고 있기 때문에 그 차이를 참고 :
>>> sys.stdout.write(s.encode('utf-8').ljust(20) + "hello")
你好 hello
>>> sys.stdout.write(s.ljust(20).encode('utf-8') + "hello")
你好 hello
참고 또한 한자 일반적인 고정 폭 글꼴의 다른 문자보다 더 넓은 일들이 아직되지 않을 수도 있습니다 당신이 원하는대로 혼합 언어 (솔루션을 this answer 참조) 경우 정렬 :
>>> sys.stdout.write("12".ljust(20) + "hello")
12 hello
는 일반적으로 당신은 stdout
에 명시 적으로 인코딩을 건너 뛸 수 있습니다. 파이썬은 암시 적으로 터미널의 인코딩 터미널에 유니 코드 문자열을 인코딩 (sys.stdout.encoding
참조)
sys.stdout.write(s.ljust(20))
을 또 다른 옵션은 print
을 사용하고 있습니다 :
print "%20s" % s # old-style
나 :
print '{:20}'.format(s) # new-style
을