본문 바로가기

Coding, Testing, Challenge/python-basic

Python 문자열 포맷팅

728x90

이번 포스팅에서는 문자열 자료형을 원하는 포맷으로 출력할 때 유용한 포맷팅에 대해서 알아보려고 합니다.

다음의 소스코드를 보겠습니다.

#1은 순수하게 문자열로 우리가 원하는 내용을 입력한 코드입니다.

이렇게 할 경우 우리는 대입되는 자료가 바뀔 때마다 매번 출력문 코드 전체를 바꾸어야 합니다.

#2는 지난 포스팅에서 보았던 정수형 -> 문자열 변환을 통해서 정수형 자료를 문자열 자료에 

삽입하여 문자열 연산을 통해서 출력하는 코드입니다.

두 코드의 결과를 보면 다음과 같이 동일합니다.

#2의 코드는 #1보다는 유지보수가 간단하지만 발생하기도 쉽고 코드 자체가 길어진다는 단점이 있습니다.

이런 단점을 보완하기 위한 방법으로 사용할 수 있는 것이 포맷팅입니다.

Python에서는 이런 포맷팅에도 여러 가지 방법이 있는데요.

하나씩 알아보도록 하겠습니다.

#3의 코드를 보면 #2의 코드에서 형 변환이 되어 들어간 변수 자리를 {}(중괄호)로 대체하였습니다.

그리고 끝에 .format()을 입력하고 각각의 중괄호의 위치에 들어갈 변수를 형 변환 없이 순서대로 입력해준 코드입니다.

이렇게 대입되어야 할 자료의 위치에 {}를 넣고 .format()에 순차대로 변수를 대입해 두면, 

Python은 출력 시에 순차적으로 자료를 대입하여 출력합니다.

출력을 보면 다음과 같이 #1, #2의 코드와 동일하게 출력되는 것을 볼 수 있습니다.

이처럼 포맷팅을 이용하면 코드 전체의 가독성도 올라갈뿐더러 유지보수도 간편해집니다.

.format()은 문자열 자료형 뒤에 붙여서 사용할 수 있는 편리한 포맷팅 방식입니다.

위의 코드를 더욱 간결하고 효율적으로 바꾸어 보겠습니다.

#4를 보면 #3에서 print문에 있던 출력 포맷 문자열을 out_string이라는 변수로 지정하였습니다.

그 후 out_string에 .format()함수를 통해서 포맷팅을 진행하였습니다.

보다 간결해지고 모든 입력 데이터가 변수로 관리되어 유지보수도 간편하게 되었습니다.

 

 

 

출력을 볼까요?

기존의 방식과 출력에서도 동일한 것을 확인할 수 있습니다.

format()의 응용에 대해서 더 알아보도록 하겠습니다.

먼저 대입되는 변수의 위치입니다.

다음의 코드를 보겠습니다.

하나는 기존과 동일하게 {}만으로, 그다음은 {} 안에 숫자가 적혀있습니다.

이 숫자는 format()에 입력되어 있는 변수의 위치입니다.

프로그래밍에서는 특수한 경우를 제외하고 항상 0부터 시작을 합니다.

즉 month = 0, day = 1, profit = 2의 위치에 있는 것이지요

아래 결과를 보면 {}만 입력되었던 코드는 순서대로 month, day, profit이 대입되어 출력되고,

순서가 기입된 코드는 day, month, profit의 순서로 대입되어 출력된 것을 볼 수 있습니다.

다음은 출력형의 포맷 변환입니다.

다음의 코드를 보면 {} 안에 :이 있고 이후 .1f라는 문자열이 보입니다.

:뒤에 오는 값은 변수에 대한 표현방법인데요.

.1f에서 f는 소수형을 의미하고, .1 은 0 아래로 1자리까지 표시하라는 의미입니다.

.2f라면 소수점 둘째 자리까지 표현이 되겠지요

그러면 출력을 보겠습니다.

보시는 것처럼 20000의 정수형이

20000.0의 소수점 1자리까지 표현되는 소수형으로 출력되는 것을 볼 수 있습니다.

format() 함수를 이용하는 방법에 대해서 알아보았습니다.

다음으로 f-string을 사용한 방법에 대해서 알아보도록 하겠습니다.

f-string은 python3.6 이후에 적용된 방식으로 python 3.6 이전에 사용하신다면 에러로 표현이 됩니다.

다음 코드를 보겠습니다.

문자열을 f''로 묶어서 표현하는 방법입니다.

그리고 문자열 내부에는 {}로 입력할 변수를 작성해주면 됩니다.

format() 함수와 마찬가지로 :을 사용하여 출력 변환도 가능합니다.

Python 3.6 이후 버전만 대응되고 있어 다양한 사용은 아직 보이지 않으나,

구버전의 Python에서 3.6 이후 버전의 코드를 대입하실 때 오류가 발생한다면 다음의 f-string 오류를 확인해 보시는 것도 좋을 것입니다.

마지막은 가장 고전적인 방법으로 이전에 C언어나 JAVA를 배우 신적이 있다면 보셨던 방법입니다.

바로 포맷팅 스트링을 사용하는 방법인데요

다음 코드를 보겠습니다.

보시는 것처럼 기존의 {} 위치에 %d 라는 문자를 볼 수 있습니다.

여기서 %d는 포맷팅 스트링이라고 하며, 

%d = 정수형 

%s = 문자열

%f = 소수형

으로 생각하시면 됩니다.

각각의 포맷팅 스트링 위치에 % 뒤 () 안의 변수들이 대입이 되며,

포맷팅 스트링에 동일하게 .1f로 표시하여 출력을 변환할 수도 있습니다.

가장 오래된 방법으로 Python에서는 많이 사용하지 않지만,

알아두시면 오래된 코드나 라이브러리를 응용, 변환하실 때 유용합니다.

 

이렇게 이번 포스팅에서는 Python 문자열 포맷팅에 대해서 알아보았습니다.

포스팅에 사용된 캡처 이미지는 아래의 Python파일로 첨부하였습니다.

test_8.py
0.00MB

다음 포스팅에서는 논리 연산과 불린에 대해서 알아보도록 하겠습니다.

 

 

'Coding, Testing, Challenge > python-basic' 카테고리의 다른 글

Python 전역변수와 지역변수  (0) 2020.12.27
Python 논리 연산과 불린  (0) 2020.12.26
Python 자료형의 형변환  (0) 2020.12.21
Python 문자열 표현과 연산  (0) 2020.12.20
Python 숫자형 연산  (0) 2020.12.20