- 문자열 포매팅(String Formatting)은 문자열 내에 값(변수나 독립 값)을 동적으로 추가 또는 변환하여 print() 문으로 출력하는 방법에 대해서 알아본다.
- 문자열 포매팅은 다양한 데이터 형식(자료 타입)을 가독성 좋게 표현할 수 있고, 코딩하는데 조금 더 있어 보이게 할 수 있다.
![[파이썬 코딩 기초]-"문자열 포매팅"으로 효과적인 파이썬 print()함수 사용하기 #012강 0](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
파이썬에서 우리가 앞에서 배웠던 자료 타입에서 문자열형과 숫자형 자료는 개별로는 출력되지만, 문자열 안에 숫자형 자료를 변수나 +
연산자로 같이 출력하면 오류가 생긴다는 것은 익히 알고 있을 것이다.
하지만, 우리가 앞으로 코딩을 하다보면 문자열 중간에 변화되는 값(숫자형 또는 문자열 등)이 수시로 변경되어 문자열과 함께 print()
로 출력해야 하는 경우가 정말 많은데, 이것이 가능토록 하는 연산자
또는 메서드
를 이용해서 직과적인 코드를 작성할 수 있도록 하는 것이 문자열 포매팅
(String Formatting)이라는 것이다.
문자열 포매팅
은 문자열 중간중간에 값을 동적으로 삽입하거나, 변환하여 출력할 수 있도록 해주는 매우 강력한 기능으로, 다양한 자료형 타입을 가독성 좋게 표현하거나, 효율적이고 직과적인 코드를 작성할 수 있게 해 준다.
문자열 포매팅
은 %
연산자 방식, format()
메서드 방식, f-string
방식으로 크게 3가지 형식으로 제공하고 있으며, 파이썬 최신버전을 사용한다는 조건으로 위 3가지 방식을 전부 사용할 수 있으며, 이번 시간에는 %
연산자, format()
메서드, f-string
3가지의 기본적인 활용 방법에 대해서 익혀보자.
3개의 방식 중에 한 가지만 잘 사용해도 되고, 3개의 방식을 적절하게 혼용해서 사용해도 되기 때문에, 가급적이면 이 세 가지 방법은 전부 익혀두고 있기를 바란다.
%
연산자 방식
파이썬 초창기부터 사용되는 가장 오래된 방식의 문자열 포매팅 방식으로, 문자열 중간에 하나이상의 %
연산자를 사용하여 변수의 값을 문자열에 삽입하여, 결과를 조합하여 출력하는 것이다.
%
연산자 포맷 코드
%포맷 코드 | 자료형 형태 | 설명 |
%s |
문자열형 자료 출력 | 문자열로 된 변수를 출력할 때 사용 |
%d |
정수형 자료 출력 | 정수로 된 변수를 출력할 때 사용 |
%f |
실수형 자료 출력 | 실수로 된 변수를 출력할 때 사용 |
%% |
% 자체를 출력 | 그냥 %를 출력할 때 사용, 예) 5% |
%
연산자는 단순히 %
만 입력하는 것이 아니라, 해당 자료형 타입에 맞게 포맷 코드를 같이 포함해야지만, 값을 삽입할 수 있다.
대부분 가장 많이 사용되는 문자열형, 정수와 실수형 3가지를 많이 사용하며, 변수 값과 포맷 코드가 맞지 않으면 오류가 발생한다.
%
연산자 기본 문법
"문자열1 %연산자1 %연산자2 문자열2" % (값1, 값2,...)
%
연산자의 기본 형태는 문자열로 이루어진 " %연산자1 %연산자2 "
안에 %연산자에 %
뒤에 있는 값 (값1, 값2, ~~)
을 동일한 순서로 대입시켜, 값1
은 %연산자1
에 값2
는 %연산자2
로 중간에 있는 %
를 통해 넘겨서 출력하는 형태이다.
위에서 설명한 것과 같이 %연산자의 대입 방법은 좌측부터 순차적으로 적용되며, 별도로 순서를 변경할 수 있는 방법은 없기 때문에, 순서를 잘 설정할 수 있어야 한다.
기본적인 사용 예시 코딩
name = "돌출과 회전" url = "esajin.kr" age = 50 # 변수에 %연산자를 이용해서 값을 할당한 후,출력 str_sum = "이름은 %s 이고, 주소는 %s 이다." % (name, url) print(str_sum) # print()함수에 직접적으로 %연산자를 사용하는 방법 print("이름은 %s 이고, 주소는 %s 이다." % (name, url)) # 한개의 값인 경우 %연산자 값에 ()없이도 사용 가능 print("나이는 %d살 이다." % age)
이름은 돌출과 회전 이고, 주소는 esajin.kr 이다. 이름은 돌출과 회전 이고, 주소는 esajin.kr 이다. 나이는 50살 이다.
%
연산자를 사용한 문자열 포매팅 방식은 오래된 방식이지만, 여전히 많이 사용하고 있는 편이고, 특히 너비, 정렬, 자릿수 지정 등 다양한 형식을 추가적으로 지원하기 때문에 간단한 코딩이나 특정 상황에서 유연하게 사용할 수 있다.
최신 버전에서는 밑에서 배울 내용들을 많이 사용하겠지만, %
연산자 포매팅 방식도 알아두기를 바라고, 같이 사용할 수 있는 너비, 정렬, 자릿수 지정에 관해서는 다음 시간에 공부해 보기로 한다.
![[파이썬 코딩 기초]-"문자열 포매팅"으로 효과적인 파이썬 print()함수 사용하기 #012강 1](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
format()
메서드 방식
파이썬 3에서 새롭게 도입된 포매팅 방식으로 str.format()
메서드를 사용하여 문자열 포매팅을 할 수 있으며, 기존의 %
연산자 방식보다 가독성이 훨씬 높고, 다양한 기능을 제공하는 등, %연산자 보다 뛰어난 성능을 가지고 있다.
%
연산자와는 다르게 대체되는 자료형에 따라 자동으로 지정되기 때문에 별도의 포맷 코드는 사용하지 않는다.
format()
기본 문법
"이것이 문자열 {} {} 포맷팅".format(값1, 값2, ...)
format()
메서드는 문자열 내에 중괄호{}
를 사용하여 포맷할 위치를 지정하고, 그 자리에 값을 삽입하는 것으로 중괄호 {}
는 format()
메서드의 인자 값(변수 목록)으로 대체된다.
기본적인 사용 예시 코딩
name = "돌출과 회전" url = "esajin.kr" age = 50 # 변수에 .format() 메서드 이용해서 값을 할당한 후,출력 str_sum = "이름은 {} 이고, 주소는 {} 이다.".format(name, url) print(str_sum) # print()함수에 직접적으로 .format() 메서드를 사용하는 방법 print("이름은 {} 이고, 주소는 {} 이고, 나이는 {} 이다.".format(name, url, age))
이름은 돌출과 회전 이고, 주소는 esajin.kr 이다. 이름은 돌출과 회전 이고, 주소는 esajin.kr 이고, 나이는 50 이다.
별도의 순서를 지정하지 않으면, %
대입자와 동일하게 좌측부터 순차적으로 적용된다.
위치 인덱스 지정으로 포매팅
name = "돌출과 회전" url = "esajin.kr" age = 50 # f-string 방식으로 {변수명}으로 문자열 포매팅 print(f"나이는 {name} 이고, 이름은 {age} 이고, 주소는 {url} 이다.") # f-string 방식의 문자열을 변수에 대입 후, 출력할 수도 있다. str_sum = f"나이는 {name} 이고, 이름은 {age} 이고, 주소는 {url} 이다." print(str_sum)
나이는 돌출과 회전 이고, 이름은 50 이고, 주소는 esajin.kr 이다. 나이는 돌출과 회전 이고, 이름은 50 이고, 주소는 esajin.kr 이다.
format()
메서드 포매팅은 %
연산자 포매팅과 다르게 {}
안에 위치 인덱스를 지정하여 변수의 지정 순서와 상관없이, 임의의 순서를 변경하여 문자열 포매팅 순서를 변경할 수 있으며, 인덱스는 0부터 시작하여, 특정 위치에 값을 넣을 수 있다.
{0}
은 첫 번째 안자(변수), {1}
은 두 번째 인자(변수), {2}
는 세 번째 인자(변수)가 지정되며, {}
에 인덱스 번호를 변경하여, 위치에 맞게 출력될 수 있게끔 조정할 수 있다.
기타, 변수 이름 지정 포메팅
, 객체 속성 접근
,딕셔너리 키 접근
및 각종 자료형 지정 및 변경 및 자릿수등 다양한 방법 등은 나중에 따로 설명하기로 하고 이번에는 기본적인 format()
사용 형식만 알아둔다.
![[파이썬 코딩 기초]-"문자열 포매팅"으로 효과적인 파이썬 print()함수 사용하기 #012강 2](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
f-string
방식
f-string
포매팅 방식은 파이썬 3.6에서부터 추가된 가장 최근에 적용된 문자열 포매팅 방법으로, 간결하고 가독성이 높은 문법을 제공하고 있어 기존의 %
연산자 방식이나 format()
메서드에 비해서 월등히 직관적이고 편리하게 사용항 수 있어 현재 가장 많이 사용되고 있는 문자열 포매팅 방식이다.
f-
string 방식의 가장 큰 장법은 문자열 안에 변수나 표현식을 직접 삽입할 수 있다는 것으로, 문자열
" "앞에
f 또는
F를 붙이고, 문자열 안에 중괄호
{}`안에 변수를 넣어 값을 삽입할 수 있도록 하고 있다.
f-string
기본 문법
f"문자열 {변수명} 포매팅"
f-string
은 문자열 앞에 f
를 먼저 붙여 f-string를 선언한 후, 문자열 안에" "
에 적용할 변수명 또는 표현식을 중괄호 {}
로 감싸서 해당 값이 문자열에 삽입되도록 한다.
기본적인 사용 예시 코딩
name = "돌출과 회전" url = "esajin.kr" age = 50 # f-string 방식으로 {변수명}으로 문자열 포매팅 print(f"나이는 {name} 이고, 이름은 {age} 이고, 주소는 {url} 이다.")
나이는 돌출과 회전 이고, 이름은 50 이고, 주소는 esajin.kr 이다.
%
연산자나 format()
메서드에서는 찾아볼 수 없는, 아주 가독성 좋고, 단순하게, 코드가 표현될 수 있도록 문자열 중간에 중괄호 {}
로 변수 name
와 age
, url
의 감싸 문자열에 그대로 삽입되어 사용하게 된다.
f-string
로 표현식 및 함수 사용 예시
x = 10 y = 5 print(f"x + y = {x + y}") # 표현식 사용
x + y = 15
name = "esajin.kr" print(f"이름을 대문자로: {name.upper()}")
이름을 대문자로: ESAJIN.KR
f-string
은 단순한 변수 대입뿐만 아니라, 복잡한 표현식도 직접 사용할 수 있도록 하고 있어, 별도의 변수에 수식을 계산하지 않고도, f-string
를 통해 계산식이나 함수 호출이나 메서드를 사용하여 문자열에 바로 적용할 수 있다.
f-string
은 앞에서 확인했듯이 기존 문자열 포매팅 방식보다 코드가 훨씬 간격하고 직관적이고, 중괄호 {}
를 사용하여 변수나 표현식, 합수 및 메서드 등을 사용하여 바로 출력할 수 있기에 코드의 가독성을 상당히 높일 수 있고, 상당히 유연하게 활용할 수 있다.
또한 f-string
은 다른 포매팅 방식에 비해 빠른 속도를 가지고 있으며, 특히 많은 문자열을 포매팅할 때 성능이 뛰어나기 때문에 현재 f-string
는 파이썬에 가장 효율적이고, 직관적인 문자열 포매팅 방식이기 때문에 이 글을 통해 f-string
의 기본 문법부터 활용까지 익혀두기를 바란다.
f-string도 다른 문자열 포매팅 방식과 마찬가지로, 자료형 변경 및 자릿수등 다양한 기능을 제공하고 있으며, 이것 역시 다음 장에서 자세히 다뤄보겠다.
우리 같이 열심히 공부해 봅시다.
죽이 되는 것보다 밥이 되는 것을 목표로~~^^
위 내용은 공부하면서 이해한 내용과 단편적인 검색 지식으로 작성된 내용으로 글에 오류가 있을 수 있으며,
오류나 잘못된 정보가 있으면 언제든지 댓글 주시면 최대한 반영/수정하겠습니다.