본문 바로가기
Programming/Python

파이썬 문자열 포매팅 방법(% 서식문자, str.format, f-string)

by 용스토리랜드 2022. 3. 23.

 


1. f-string ? 

파이썬 3.6 버전 이후부터 f-string 방법을 사용할 수 있습니다. 

 

1.1 string formatting - 문자열 포매팅이란 

 

문자열에서 특정 부분만 바꾸고 나머지 부분은 일정하다고 할 때, 문자열 포매팅을 이용해서 이쁘게 출력 할 수 있다. 

 

1.2 f-string 이란 ? 

 

f-string 의 모양은 f 와 {} 만 알면 됩니다. 문자열 맨 앞에 f 를 붙여주고, 중괄호 안에 직접 변수 이름이나 출력하고 싶은 것을 바로 넣으면 됩니다.

 

## 변수 값을 넣어주는 방식

 

# 문자열 맨 앞에 f 를 붙이고, 출력할 변수, 값을 중괄호 안에 넣습니다. 

name = "yong hyeok" 
age = 27

print(f"my name is {name} and i'm {age}.")

# 동일한 방법
profile = f"my name is {name} and i'm {age}."
print(profile)

# output
> my name is yong hyeok and i'm 27.
> my name is yong hyeok and i'm 27.

이러한 방식으로 맨 앞에 f 를 붙이고 중괄호 안에 변수 이름, 값을 넣으면 됩니다. 

 

여기서 변수 이름, 값 은 정수, 실수, numpy, tensor, 등등 모두 가능

 

1.3 정리

1. 문자열 맨 앞에(따옴표 앞) f 를 붙인다. 

2. 사용하고 싶은 변수, 값을 중괄호 앞에 넣는다. 

 


2. %서식문자

 

2.1 % 서식문자의 모양은 % 기호 뒤에 자료형을 가리키는 문자가 옵니다. 

 

아래의 세 가지만 알면 됩니다.

%s => 문자열 

%d => 정수 

%f => 실수

 

2.2 포매팅 해야할 변수 값이 두 개 이상일 경우

() 소괄호로 묶어주어 순서에 맞게 입력해주면 됩니다.

% 서식 문자를 이용한 문자열 포맷팅은 타입을 정해야 하기 때문에 불편한 점이 존재합니다 .

 

# % 서식문자

a = [x for x in range(10)]
b = [float(x) for x in a]
c = ["혁", "현", "태", "준"]

### integer
for idx, x in enumerate(a) : 
    print("integer element in list : %d 번째 : %d" % (idx, x))
    
>>>output
>>>
integer element in list : 0 번째 : 0
integer element in list : 1 번째 : 1
integer element in list : 2 번째 : 2
integer element in list : 3 번째 : 3
integer element in list : 4 번째 : 4
integer element in list : 5 번째 : 5
integer element in list : 6 번째 : 6
integer element in list : 7 번째 : 7
integer element in list : 8 번째 : 8
integer element in list : 9 번째 : 9

### float
for idx, x in enumerate(b) : 
    print("float element in list : %d 번째 : %f" % (idx, x))

>>> output
float element in list : 0 번째 : 0.000000
float element in list : 1 번째 : 1.000000
float element in list : 2 번째 : 2.000000
float element in list : 3 번째 : 3.000000
float element in list : 4 번째 : 4.000000
float element in list : 5 번째 : 5.000000
float element in list : 6 번째 : 6.000000
float element in list : 7 번째 : 7.000000
float element in list : 8 번째 : 8.000000
float element in list : 9 번째 : 9.000000

### string
for idx, x in enumerate(c) :
    print("string element in list : %s 번째 : %s" % (idx, x))
    
>>> output
string element in list : 0 번째 : 혁
string element in list : 1 번째 : 현
string element in list : 2 번째 : 태
string element in list : 3 번째 : 준

3. format 함수

format 함수는 중괄호 {} 안에 포매팅을 지정하고 format 함수의 인자로 값들을 넣습니다.

 

{인덱스 0, 인덱스 1}.format(값0, 값1)

# 정수, 실수, 문자 타입을 지정하지 않아도 되기 때문에 더욱 편리함

for idx, x in enumerate(a) : 
    print("integer element in list : {0} 번째 : {1}".format(idx, x))
    
for idx, x in enumerate(b) : 
    print("float element in list : {0} 번째 : {1}".format(idx, x))
    
for idx, x in enumerate(c) :
    print("string element in list : {0} 번째 : {1}".format(idx, x))

 

저자 개인적으로는 format > f string > % 서식문자 순으로 편리하고 많이 사용하는 것 같습니다.

 

반응형

'Programming > Python' 카테고리의 다른 글

[클래스] 비공개 속성 사용하기  (0) 2023.03.12
[클래스] 속성 사용하기  (0) 2023.03.12
[클래스] Class 사용하기  (0) 2023.03.12
모듈/패키지/라이브러리  (0) 2022.03.31
if __name__ == "__main__"  (0) 2022.03.31