String Formatting

정의

  • 문자열 형식 지정, String Formatting
  • 변수 값을 포함한 문자열을 생성하는 데 사용됨

방법

No 방법
1 C 스타일의 %연산자 formatting
2 str.format()메서드를 이용한 formatting
3 f-string formatting

C 스타일의 % 연산자

  • C 언어의 printf() 스타일과 유사한 formatting 방법
  • 장점 : C언어를 배운 사람이라면 쉽게 이해하고 사용함
  • 단점 : 변수의 개수가 증가할 수록 복잡성 증대, 가독성 저하
  • 단점 : 딕셔너리, 리스트 등 중첩된 데이터 구조를 직접 활용하기 어려움
1
2
# 문법 형식
"형식 지정자를 포함한 문자열" % (변수 리스트)
형식 지정자 설명
%d 정수(decimal) 출력
%i 정수(integer) 출력 : %d와 동일
%o 8진수 출력
%x 16진수 출력 (lower case)
%X 16진수 출력 (upper case)
%f 소수점이 있는 실수 출력
%.nf 소수점 이하 n자리까지 출력
%c 단일 문자 출력
%s 문자열 출력
%% %문자 자체를 출력
 
1
2
3
4
5
# 예제  
item = "프린터"
price = 360000
print("상품명 : %s, 가격 : %d" % (item, price))
>> 상품명 : 프린터, 가격 : 360000

str.format() 메서드

  • 중괄호 {}를 자리표시자로 이용해 문자열 내의 변수의 위치를 표현하는 방법
  • String 클래스의 메서드 중 하나
  • 장점 : 형식 지정자를 지정하지 않아도 돼서 간편
  • 장점 : % 연산자 방식보다 가독성이 낫고 유연함
  • 단점 : 변수의 개수가 증가할 수록 복잡성 증대, 가독성 저하
1
2
3
4
5
6
7
8
# 문법 1
"{} 를 포함한 문자열".format(변수1, 변수2 ...)

# 문법 2
"{0}번 변수와 {1}번 변수 같이 순서를 지정".format(변수1, 변수2 ...)

# 문법 3
"{item} 상품은 {price}원 과 같이 변수를 지정".format(item, price)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 예제 1
item = "프린터"
price = 360000
print("상품명 : {}, 가격 : {}".format(item, price))
>> 상품명 : 프린터, 가격 : 360000

# 예제 2
item = "프린터"
price = 360000
print("상품명 : {0}, 할인 가격 : {1}".format(item, int(price * 0.8)))
>> 상품명 : 프린터, 할인 가격 : 288000

# 예제 3
item_name = "프린터"
print("상품명 : {item}, 원래 가격 : {price:,}, 할인 가격 : {sale:.2f}, 소비세 : {tax:.1%}".format(item=item_name, price=3500, sale=3500*0.7189, tax=0.1))
>> 상품명 : 프린터, 원래 가격 : 3,500, 할인 가격 : 2516.15, 소비세 : 10.0%

f-string

  • 파이썬 3.6버전부터 도입된 문자열 formatting 방식
  • 문자열 앞에 f 또는 F 접두사를 붙이고, 문자열 내부에 중괄호({})를 사용해 변수나 수식을 표현
  • 문자열 형식을 지정할 때에는 콜론(:) 을 붙이고, 그 뒤에 형식 지정
  • 장점 : 직관적, 코드 길이 단축, 가독성 향상
1
f"문자열 {수식}"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 예제 1
item = "프린터"
price = 360000
print(f"상품명 : {item}, 가격 : {price}")
>> 상품명 : 프린터, 가격 : 360000

# 예제 2
item = "프린터"
price = 360000
print(f"상품명 : {item}, 할인 가격 : {int(price*0.8)}")
>> 상품명 : 프린터, 할인 가격 : 288000

# 예제 3
item_name = "프린터"
print(f"상품명 : {item_name}, 원래 가격 : {3500:,}, 할인 가격 : {3500*0.7189:.2f}, 소비세 : {0.1:.1%}")
>> 상품명 : 프린터, 원래 가격 : 3,500, 할인 가격 : 2516.15, 소비세 : 10.0%

Reference

방송통신대 - 오픈소스기반 데이터분석 (정재화)

Comments