Language/Python

[Python] 문자열 포매팅(형식화)

원씨 2023. 2. 26. 16:16

프로그래밍을 다시 공부하는 중 다양한 문자열 포매팅 방식이 생겨났다는 것(있었는데 몰랐을지도...)을 알 수 있었다.

3가지 포매팅 방식이 있고, 내가 공부하는 교재에서는 이를 옛 스타일, 새 스타일, 최신 스타일로 구분하고 있다.

책의 저자는 파이썬2까지는 옛 스타일(2.3에서 지원), 파이썬 3을 사용한다면 새 스타일의 포매팅(2.6 이상에서만 지원)을, 파이썬 3.6 이상을 사용한다면 f-문자열을 사용(3.6 이상에서만 지원)할 것을추천하고 있다.

 

1. 옛 스타일

먼저 옛 스타일은 format_string % data 의 형태로 다른 언어에서도 흔히들 사용하는 '%'를 활용하는 방식이다. 문자열 사이에 %와 데이터 형식을 삽임함으로 간편하게 문자열 사이에 원하는 변수, 리터럴 등을 삽입할 수 있다.

변수타입 형식
문자열 %s
10진수 %d
16진수 %x
8진수 %o
10진 부동소수점 %f
지수로 나타낸 부동소수점 %e

예를들어 아래와 같은 코드가 있다고 가정하자

print("내가 좋아하는 배우는 %s이며 가장 좋아하는 영화는 %s입니다." %("박서준", "청년경찰"))

그렇다면 각각의 %s에 박서준, 청년경찰이 각각 들어가서

"내가 좋아하는 배우는 박서준이며 가장 좋아하는 영화는 청년경찰입니다." 와 같은 결과물을 낼 것이다.  

 

이는 문자열 뿐만아니라 다른 변수타입 및 형식에도 동일한 방식을 제공하며 형식을 조금씩 변형(%12s, %5.5f등)하여 원하는 형태(좌우정렬, 공백 넣기 등...)를 만들어 낼 수 있다.

 

 

2. 새 스타일

새 스타일의 포매팅은 format_string.format(data) 의 형식이다. 

 

다음과 같은 코드를 보자.

>>> movie = "청년경찰"
>>> actor = "박서준"
>>> "내가 가장 좋아하는 영화는 {}, 가장 좋아하는 배우는 {}입니다.".format(movie, actor)

위와 같이 코드를 입력하게 되면 각각의 {}에 movie와 actor가 들어가서

"내가 가장 좋아하는 영화는 청년경찰, 가장 좋아하는 배우는 박서준입니다." 와 같은 결과물을 낼 것이다.

 

이는 괄호 안에 여러가지 문구를 넣어 다른 인수의 순서를 지정하는 등의 코드도 작성할 수 있다. 다음의 각 코드는 같은 결과물을 내는 코드다.

>>> "내가 가장 좋아하는 영화는 {1}, 가장 좋아하는 배우는 {0}입니다.".format(actor, movie)
>>> "내가 가장 좋아하는 영화는 {movie}, 가장 좋아하는 배우는 {actor}입니다.".format(actor = "박서준", movie = "청년경찰")

 

 

2. 최신 스타일

최신 스타일의 포매팅은 f-문자열이라고 부르며 새 스타일과 비슷하지만 format()메소드가 없고 빈 괄호 및 위치 괄호가 없다.

 

다음의 코드를 보자

>>> actor = "박서준"
>>> movie = "청년결찰"
>>> f'내가 가장 좋아하는 배우는 {actor}이며 영화는 {movie}입니다.'
'내가 가장 좋아하는 배우는 박서준이며 영화는 청년경찰입니다.

위와 같이 앞에 f를 입력 후 내용 중 중괄호에 변수명을 작성하면 그 내용을 포함한 문자열을 출력하게 된다.

중괄호 안에 각종 표현식 등을 사용할 수 있다.

 

 

참고서 - 빌 루바노빅, 『처음 시작하는 파이썬 2판』, 한빛미디어