파이썬의 문자열 포매팅(formatting)을 할 때 줄길이를 맞춰주는 방법이 있다.
영어나 숫자라면 널리 알려진 방법을 쓰면 된다.
예시
print("{0:10}".format("123"))
>>> 123
알파벳이나 숫자는 한 글자가 문장에서 한 칸(?)을 차지하지만 한글은 그렇지 않다. 두 칸을 차지한다.
len('안녕하세요')
>>> 5
len('abcde')
>>>5
문자열 시퀀스의 길이는 같다지만 표기시 나타나는 문자열의 실제 길이는 아래와 같이 차이난다.
안녕하세요
abcde
한글의 글자수와 공백의 한칸 이런것을 다계산해 빈칸 길이를 맞추거나 pedding한다면 너무 번거로울 것이다.
이럴땐 wcwidth패키지를 사용하면 된다.
wcwidth는 World Character Width의 약자로 영어가 아닌 문자들의 넓이와 관련된 패키지라고 한다.
from wcwidth import wcswidth
def wcpadding(sequence, length):
return sequence + " " * (length-wcswidth(sequence))
#sequence: 문자열 포메팅할 문자
#length: formatting하여 표기될 문자가 차지할 길이
print("{0}|{1}".format(wcpadding("대한민국",10), wcpadding("싱가포르",10)))
print("{0}|{1}".format(wcpadding("경기도 성남시",10), wcpadding("경상북도 경주시",10)))
#line8 출력 결과 스크립트 모드의 터미널 출력에서는 정확하게 줄맞춤 가능
#그러나 jupyter notebook에서는 line8은 줄이 정확하게 맞춰지지 않은 상태로 출력됨
print("{0}\t|{1}".format(wcpadding("대한민국",10), wcpadding("싱가포르",10)))
print("{0}\t|{1}".format(wcpadding("경기도 성남시",10), wcpadding("경상북도 경주시",10)))
# 출력되는 줄이 조금 길어지긴 하나 jupyter notebook에서도 줄맞춤이 잘 된 상태로 출력됨
jupyter notebook 출력 화면
반응형
'Work & IT' 카테고리의 다른 글
[부스트코스 코칭스터디] AI Basic 부스터 선정 (0) | 2022.01.08 |
---|---|
초보자의 Github 사용 도전 (0) | 2021.10.06 |
ACP - Digital Video using Adobe Premiere Pro 취득 (0) | 2021.09.01 |
코딩(파이썬) 과외 (1) | 2021.08.30 |
관성과 게으름 (8) | 2021.08.23 |