반짝이는 오렌지

[Python] 기초 문법 : 문자열 포매팅 %, format(), f 본문

Python/Python 기초

[Python] 기초 문법 : 문자열 포매팅 %, format(), f

twinkle orange 2022. 5. 13. 11:51
728x90
반응형

이번 게시물에서는 원하는 형식으로 포매팅하는 방법을 배워 보겠다.

예를 들어 '오늘의 날씨는 oo 도 입니다.'라는 형식으로 문자열을 출력한다고 하자. 

그리고 위의 형식에서 기온만 변경이 된다면 oo에 해당하는 부분만 데이터가 바뀌는 형태로 문자열을 만들면 된다.

이렇게 같은 문자열 구조로 만드는 것을 포맷이라고 하는데 포매팅하는 것을 배워 보겠다.

포매팅에는 아래와 같이 세가지 방식이 있다.

  • %
  • format() 
  • f 문자열

 

  • %

%를 사용할 때는 '문자열 %s'  %값 과 같이 입력하면 된다. 이 때, 값의 유형에 따라서 %s, %c 등 아래와 같이 포매팅 코드를 입력한다.

코드 설명
%s 문자열(String)
%c 문자 1(character)
%d 정수(Integer)
%f 부동소수(floating-point)
%o 8진수
%x 16진수
%% Literal % (문자 % 자체)

 

  • %s : 문자열

'오늘은 0요일 입니다.' 형식으로 출력하고 싶다. 이때 '월요일', '화요일' .. 등의 문자열을 입력하고 싶다면 해당 문자열이 입력 될 위치에 %s를 입력한다.

'오늘은 %s 입니다. ' %화요일
# '오늘은 화요일 입니다.'
  • %d : 정수

'오늘 온도는 o도 입니다.'라는 형식에서 도수에 대한 부분을 특정 값을 받아 출력하고 싶다면 아래와 같이 입력하면 된다. 7이라는 정수를 받으므로 %d를 입력한다. 7이 입력 될 위치에 $d를 입력하면 된다.

'오늘 온도는 %d 도 입니다. ' % 7
# '오늘 온도는 7 도 입니다. '
  • %f : 실수

소수점이 있는 실수라면 %f 포매팅 코드를 사용한다.

default 값으로 소수점은 6자리수까지 표기한다.

'3반 학급의 평균성적은 %f 점 입니다.' % 78.54561121324 
# '3반 학급의 평균성적은 78.545611 점 입니다.'

소수점 자리를 원하는대로 입력하고 싶다면 %f 사이에 0.1, 0.2와 같이 입력하면 된다.

0.1은 소수점 첫 째 자리까지 표기, 0.2는 소수점 둘 째 자리까지 표기하는 것을 의미한다.

'3반 학급의 평균성적은 %0.2f점 입니다.'  % 78.54561121324
# '3반 학급의 평균성적은 78.55점 입니다.'
  • % ( ): 두개 이상의 값으로 포매팅

두 개 이상의 값을 사용하기 위해서는 %뒤에 괄호를 사용한다.

이때 '오늘'은 문자형, 7은 정수이므로 각각 %s, %d를 사용한다. %() 안에 입력된 값이 순서대로 문자열 안으로 할당 된다.

'%s 온도는 %d 도 입니다.' %('오늘', 7) 
# '오늘 온도는 7 도 입니다.'
  • format() 
  • 기본형식

format() 함수로도 formatting을 할 수 있다. 

기본 형식은 '문자열'.format() 으로 작성하며, 문자열 안에 { } 괄호를 사용하여 괄호안의 위치에 해당 데이터가 입력되는 방식이다.

'오늘 온도는 {}도 입니다.'.format(3)
# '오늘 온도는 3도 입니다.'
  • 2개 이상 데이터 포멧팅

2개 이상의 데이터를 입력하고 싶다면 format() 함수안에 두 개 이상의 값을 입력한다. 또한 { } 괄호도 데이터 개수와 동일하게 입력한다.

아래 코드를 보면 % 포메팅 방식과 다르게 해당 데이터가 숫자, 문자 등 유형이 다르더라도 별도의 다른 방식이 아닌 동일한 형태로 입력할 수 있다.

day = '7일'
number = 10
'{} 온도는 {}도 입니다.'.format(day, number)
#'7일 온도는 10도 입니다.'
  • 소수점 정리 

%를 사용할때는 %0.2f 와 같이 사용했다. format() 에서는 :0.2f와 같이 입력하면 된다. 

day = '7일'
number = 10.2654
# format() 함수로 소수점을 정리할 때는 ':f' 사이에 소수점 정보를 입력한다.
'{} 온도는 {:0.2f}도 입니다.'.format(day, number)
#'7일 온도는 10.27도 입니다.'
  • format 순서 변경

format 함수안에 동일한 변수를 입력하고 formatting 되는 순서를 다르게 입력하고 싶다면 { } 괄호에 index 번호를 입력한다. index 번호는 0부터 시작한다.

day = '7일'
number = 10
'{0} 온도는 {1}도 입니다.'.format(day, number)
#'7일 온도는 10도 입니다.'.

'{1} 온도는 {0}도 입니다.'.format(day, number)
#'10 온도는 7일도 입니다.'.

 

  • f 문자열
  • f 문자열(f - string) 입력 방식

f'문자열 {변수}' 

 

day = '7일'
number = 10.2654
f'{day} 온도는 {number}도 입니다.'
#'7일 온도는 10.2654도 입니다.'
  • 소수점 정리

{ } 괄호안의 변수 뒤에 :0.2f 와 같이 입력하면 된다.

f'{day} 온도는 {number:0.2f}도 입니다.'
# f문자열에서 소수점을 정리할 대는 {} 안의 변수명 뒤  ':f' 사이에 소수점 정보를 입력한다.
#'7일온도는 10.27도 입니다.'
반응형