본문 바로가기
데이터관련공부/Python

Python | 문자열과 변수를 함께 출력하는 법 (문자열 포맷팅)

by 자유롭고 싶은 키털트 2023. 8. 31.

이번 포스팅에서는 변수와 문자열을 함께 출력하는 법에 대해서 정리해 보겠습니다. 예를 들어 하기와 같이 a, b 변수를 만들고 이를 합쳤을 때 값까지 함께 출력하고 싶다고 가정하겠습니다. 

 

= 10
= 20
sum_ab = a + b
 
print(a,'와',b,'의 합은',sum_ab,'입니다')
cs

 

 

print 구문에 각 변수와 문자열을 함께 입력해야 할 것입니다. 중간 중간에 변수일반 문자열구분을 위해 쉼표(,) 를 넣어 주어야 합니다. 그리고 일반 문자열' ' 로 감싸 주어야 합니다. 물론 변수가 몇 개 안될 때는 이렇게 출력해도 무방 하겠지만 문자열과 함께 출력해야 할 변수가 많아질 경우에는 print 구문을 사용하여 변수와 문자열을 함께 출력하는 것이 복잡해질 수 있습니다. 

 

이 때는 하기와 같이 문자열 포맷팅 이라는 것을  사용 할 수 있습니다. 하기 방법들의 경우 중간에 쉼표가 들어갈 필요 없이 문자열인 문장 가운데 변수가 들어갈 자리를 지정해 줄 수 있습니다.

 

총 세 가지 방법에 대해 하나 하나 살펴보겠습니다.

 

# 포맷 코드 사용
print('%d 와 %d 의 합은 %d 입니다' % (a, b, sum_ab))
 
# format 함수 
print('{} 와 {} 의 합은 {} 입니다'.format(a, b, sum_ab))
 
# f 문자열 사용
print(f'{a} 와 {b} 의 합은 {sum_ab} 입니다')
 
cs

 

 

1) 포맷 코드 사용

 

첫번째 방법은 포맷 코드 사용입니다. 변수를 출력할 위치문자열 포맷 코드를 작성하는 방식입니다. 변수의 데이터 타입별로 하기와 같은 포맷 코드를 작성합니다. 예를 들어 변수가 실수일 경우 %f 를 입력하는 식입니다. 

%d 정수
%f 실수
%s 문자열

 

하기와 같이 'x는 7 y는 10.2 z는 사과 입니다' 라는 문장을 출력하고 싶습니다.

 

포맷코드를 사용할 경우, 앞서 기술했듯, 변수를 출력할 위치에 문자열 포맷 코드를 사용합니다.

 

예를 들어 하기 print 구문을 보면, 

  • 각 변수 x, y, z 가 들어갈 자리해당 변수의 포맷 코드인 %d, %f, %s 를 각각 넣었습니다.
  • x 는 정수이므로 %d, y 는 실수 이므로 %f 를 넣되 우리는 소수점 한 자리로 표현하고 싶기에 %.1f 로 넣었습니다. z 의 경우 문자열 이므로 %s 를 넣은 것입니다.
  • 소수점 자리: %.1f   
  • 소수점 두 자리: %.2f
  • 그리고 문자열 뒤% 를 넣고 각 문자열 포맷에 매칭될 변수들을 괄호 ( ) 안에 넣어줍니다. 
  • % 뒤에 변수들은 각 포맷 코드에 순서대로 대응합니다. 
= 7
= 10.20
= '사과'
 
# 각 문자열 포맷 코드는 각 변수 x, y, z 에 대응한다.
# 문자열의 포맷 코드와 변수의 데이터 타입 (자료형) 은 일치해야 한다. 
 
print('x는 %d y는 %.1f z는 %s 입니다' % (x, y, z))
 
 
cs

2) format 함수 사용

 

두번째 방법으로 format 함수를 사용해 보겠습니다. 1)번 포맷 코드 사용 방법에서 사용했던 똑같은 구문을 출력해 보겠습니다.

 

format 함수도 마찬가지로, 변수를 출력할 위치를 따로 구분해 주는데 단순하게 중괄호로 { } 로 구분해 줍니다.

 

    • { } 는 그대로 사용할 수도 있고 안에 인덱스를 넣어 줄 수도 있습니다.
    • { } 만 사용할 경우 format () 안에 적은 순서대로 출력됩니다. 하기 예시 코드 에서 x 는 첫번째 { }, y 는 두번째 { } 로 대응하여 출력되는 식입니다.
    • { } 안에 인덱스를 사용할 경우 인덱스 순서대로 출력됩니다. 하기 예시 코드 세번째 구문을 봅시다. format(y, x, z) 안에  y 는 0번째 위치 하므로 {0} 에 출력됩니다. x 는 1번째 위치하므로 {1} 에 출력됩니다.  
= 7
= 10.20
= '사과'
 
# format(x, y, z) 안 각 변수 x, y, z 는 괄호 { } 안에 순서대로 대응한다. 
 
print('x는 {} y는 {} z는 {} 입니다'.format(x, y, z))
 
# { } 안에 인덱스를 넣을 경우, 인덱스 순서대로 대응한다. 
print('x는 {0} y는 {1} z는 {2} 입니다'.format(x, y, z))
 
# 위 구문과 결과는 같지만 format 안에 변수 순서를 바꾸었다.
print('x는 {1} y는 {0} z는 {2} 입니다'.format(y, x, z))
 
cs

 

3) f 함수 사용

마지막으로 f 함수 사용법을 살펴보겠습니다. 위의 두 방법 보다 간단해 보일 수 있습니다. 마찬가지로 1) 에서 사용한 구문을 그대로 f 함수를 사용하여 출력해 보겠습니다. 

 

  • 문자열 앞f 붙입니다.
  • 포매팅할 위치에 있는 변수명중괄호{ }로 감싸면 됩니다.
= 7
= 10.20
= '사과'
 
# f 문자열
# 문자열 ' ' 앞에 f 를 분이고, 중괄호{ } 안에 변수명을 적는다.
 
print(f'x는 {x} y는 {y} z는 {z} 입니다')
 
cs
반응형