[Python] 문자열 포매팅(형식화)
프로그래밍을 다시 공부하는 중 다양한 문자열 포매팅 방식이 생겨났다는 것(있었는데 몰랐을지도...)을 알 수 있었다.
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판』, 한빛미디어