[Python3] 문자열 형식화 (formatting)

Alexandria·2023년 8월 31일
0

Python3 Basic

목록 보기
3/19
post-thumbnail

1. % operator

% operator를 사용한 print는 다음과 같이 사용할 수 있습니다.

%데이터 타입의 조합으로 변수를 출력합니다.

print("%s" % "Hello, Python!")

자주 사용하는 데이터 타입은 다음과 같이 사용됩니다.

ConversionMeaning
%c/%s문자/문자열
%d정수
%f실수
%x/%X소문자/대문자 16진법

두개 이상의 데이터는 다음과 같이 사용할 수 있습니다.

다만, 문자열의 길이가 길어질수록 가독성이 떨어진다는 단점이 존재합니다.

print("My %s : %d" % ("Age", 25))

또한 다음과 같이 정수를 받을 수 있지만, 문자열을 넘겨주는 것과 같이

타입이 일치하지 않으면 TypeError가 발생하니 사용할 때 주의가 필요합니다.

print("My %s : %d" % ("Age", "25"))
"""
TypeError: %d format: a number is required, not str
"""

2. str.format()

str.format()를 사용한 포맷팅은 중괄호({})를 사용합니다.

데이터 타입을 신경쓰지 않아도 되는 장점이 있습니다.

print("My {} : {}".format("Age", "25"))

placeholder을 지정하여 % operator에 비해 가독성이 좋아질 수 있어도

문자열의 길이가 길어질수록 코드가 길어지는 단점이 존재합니다.

print("I'm {name} and {age} years old".format(name="John doe", age="20"))

변수의 위치를 지정하여 순서상관없이 포맷팅이 가능하다는 특징이 있습니다.

print("I'm {1} years old, my name is {0} and i live on the {1}th floor".format("John doe", "20"))

💡 인덱스는 0부터 시작합니다.

3. f-string

Python 3.6이상부터 추천되는 포맷팅 방법은 f-string(formatted string literals)입니다.

f-string은 str.format()과 마찬가지로 중괄호({})를 이용합니다.

하지만, % operator과 str.format()보다는 코드의 길이가 줄어들면서 가독성이 좋아집니다.

f-string을 사용한 포맷팅은 다음과 같이 사용합니다.

NAME    = "John doe"
AGE     = 20
print(f"My Name is {NAME} and {AGE} years old")

가독성과 데이터 타입에 자유로운 점도 이점이지만, 성능면에서도 차이가 존재합니다.

f-string이 가장 빠르게 수행되며 그 다음으로는 % operator가 빠르게 수행되었습니다.

4. Padding and Alignment

패딩을 이용하여 출력문을 정렬해볼 수 있습니다.

10만큼 왼쪽 패딩을 사용한다면 다음과 같이 10글자만큼 공간에서

우측부터 문자열이 쓰여집니다.

포맷팅별 정렬 방식은 다음과 같습니다.

DATA    = "Python"

# 왼쪽 패딩
print("%10s" % (DATA))       #     python
print("{:>10}".format(DATA)) #     python
print(f"{DATA:>10}")         #     python

# 오른쪽 패딩
print("%-10s" % (DATA))      # Python    
print("{:<10}".format(DATA)) # Python    
print(f"{DATA:<10}")         # Python    

공백이 아닌 특정 문자를 이용하여 패딩을 취할 수 있습니다.

DATA    = "Python"
print(f"{DATA:*>10}") # ****Python
print(f"{DATA:*<10}") # Python****

점(.)을 이용하면 출력할 수 있는 데이터의 자릿수를 지정할 수 있습니다.

실수(float)형의 형식지정자를 지정하면 반올림 이후 자릿수만큼 출력됩니다.

DATA    = "Python"

print("%.3s" % (DATA))      # pyt
print("{:.3}".format(DATA)) # pyt
print(f"{DATA:.3}")         # pyt

DATA    = 3.1415926535
print("%.3f" % (DATA))      # 3.142
print("{:.3f}".format(DATA))# 3.142
print(f"{DATA:.3f}")        # 3.142
profile
IT 도서관

0개의 댓글