Programming/python

[파이썬 기초] 문자열 format 사용법

방황하는 데이터불도저 2023. 5. 11. 00:01

문자열에 대해 format() 함수를 사용하여 다양한 변형을 적용해줄 수 있다.

 

'{ }'.format( )에서 {}에 들어갈 수 있는 다양한 옵션들과 문법은 아래의 링크에서 확인할 수 있다.

 

https://docs.python.org/ko/3/library/string.html#format-string-syntax

 

string — Common string operations

Source code: Lib/string.py String constants: The constants defined in this module are: Custom String Formatting: The built-in string class provides the ability to do complex variable substitutions ...

docs.python.org

주요 특징들 정리

 * '{ } { }'.format(a, b)  '{0} {1}'.format(a, b)과 동일하다.

 * 포맷팅 중괄호 안에서 변수의 인자(인덱싱) 선택이 가능하다.

print("\n{1}의 소속사는 {0}이며 {2}라는 히트곡이 있습니다.".format("하이브", "세븐틴", "아주 NICE!"))

# Output
# 세븐틴의 소속사는 하이브이며 아주 NICE!라는 히트곡이 있습니다.
# 공식문서 예제
"First, thou shalt count to {0}"  # References first positional argument
"Bring me a {}"                   # Implicitly references the first positional argument
"From {} to {}"                   # Same as "From {0} to {1}"
"My quest is {name}"              # References keyword argument 'name'
"Weight in tons {0.weight}"       # 'weight' attribute of first positional arg
"Units destroyed: {players[0]}"   # First element of keyword argument 'players'.

 

 * { } 중괄호 안에 중괄호를 표현해야할 때, {{ }}로 중복해서 사용하면 된다.

 * 중괄호 안에 변수를 넣어야 할 때는 {{{ }}} 세번 중복하여 사용해야 한다.

print("내 이름은 {}입니다.".format("홍길동"))
# Output : 내 이름은 홍길동입니다.

print("\n내 이름은 {{0}}입니다.".format("홍길동"))
# Output : 내 이름은 {0}입니다.

print("\n내 이름은 {{{}}}입니다.".format("홍길동"))
# Output : 내 이름은 {홍길동}입니다.

 

 * 기존의 % 포맷팅과 유사한 기능으로 { }안에서 : 이 대신 사용된다. (f'{var}'에서도 가능)

 * 정수 표현

   : ' b '는 이진 형식, ' c '는 문자열, ' d '는 십진 정수, ' o '는 8진법 정수, ' x '는 16진법 정수

'{:3.2f}'.format(3.14)   # '3.14'
 '{:3.2f}'.format(3.14234)       # '3.14'
 
 # f는 float라는 의미
 # 총 3자리 중에서 2자리가 소숫점 자리라는 의미

 

 * 정렬 옵션

   : ' > ' 는 우측 정렬, ' < '는 좌측 정렬, ' ^ '는 중앙정렬, ' = '는 정수일 경우 정수앞의 빈 위치에 0을 넣어 주는 옵션

a = 123456
b = 7890
print("{:>15,d}".format(a))
print("x{:>14,d}".format(b))
print("-"*15)
print("{:>15,d}".format(a*b))

# Output
        123,456
x         7,890
---------------
    974,067,840