본문 바로가기
개발/python

python 문자열 포매팅, string 을 세밀하게 다루는 방법

by 왼하루 2022. 4. 12.
반응형

파이썬에서 문자열(string)은 다양한 방법으로 구성, 변형할 수 있습니다. 특히 문자열 포매팅은 문자열 안에 어떤 값을 끼워넣는 방법입니다. 문자열 포매팅을 잘 활용하면 불필요한 문자열 늘리기를 방지하고, 지속적으로 변화가 필요한 문자열을 다룰 때 유용합니다.

 

 

파이썬 문자열 포매팅 

문자열 포매팅은 크게 3가지로 사용합니다. 사용방법은 각기 다르지만 결국 문자열을 완성하기 때문에, 본인에게 맞는 방법을 사용하면 되겠습니다.

 

  • %를 이용한 방법
  • f string 사용 방법
  • format 함수 사용 방법

 

 

%를 이용한 방법

%는 C 언어에서 처럼 출력할 값의 타입을 정의하고, 해당 위치에 출력한 값을 위치시킬 수 있는 포매팅 입니다. 

 

# %d 등의 타입으로 정의한 후, % 뒤에 값을 삽입
str_test = "제 나이는 %d 살 입니다." % 3
print(str_test)

# 문자열도 바로 대입 가능
str_test = "저 %s은 남자입니다." % "홍길동"

 

위의 코드에서 %d 에 3이 대치되어 str_test 를 문자열(string) 타입으로 선언됩니다. 

 

결과

 

%를 이용하여  2개 이상의 값을 넣기 위해서는 % 뒤 괄호안에 (,)를 넣어 구분하면 됩니다.

 

# 2개이상 값을 이용할 때는 () 이용
str_test = "저 %s는 %d 살 입니다." % ("홍길동", 3)
print(str_test)

 

결과

 

값이 아닌 변수를 대입하여 사용해도 무방 합니다. 2개 이상의 값을 넣어보도록 하겠습니다.

 

# 변수도 대입 가능
name = "홍길동"
age = 3
str_test = "저 %s은 %d 살 입니다." % (name, age)
print(str_test)

 

 

%를 사용할 때는 값의 타입에 따라 정의를 해줘야 합니다. 포맷 코드는 아래를 참조하시기 바랍니다.

 

코드 설명
%d 정수(integer)
%f 실수(float)
%s 문자열(string)
%c 문자 1개(character)
%o 8진수
%x 16진수
%% %를 문자로 사용할 때

 

%s 의 경우, 어떠한 값을 사용하더라도 문자열로 형변환되어 사용할 수 있습니다.

 

 

f string 사용 방법

파이썬 3.6 이후 f string 포메팅을 사용할 수 있습니다. 문자열 앞에 f를 붙이고, {} 안에 값을 삽입하여 사용합니다.

 

# f를 문자열앞에 위치 시킨후 {}안에 값 혹은 변수 삽입
name = "홍길동"
age = 3
str_test = f"저 {name}은 {age} 살 입니다."
print(str_test)

 

재밌는 점은 이 {} 안에 수식을 함께 사용할 수 있습니다. 이를 표현식이라고 합니다.

 

# f string 포매킹은 표현식 사용 가능
name = "홍길동"
age = 3
str_test = f"저 {name}은 {age + 4} 살 입니다."
print(str_test)

 

age+4 결과값

 

f string 포매팅은 값이나 변수를 {} 안에 직관적으로 표현해주기 때문에 코드 해석력을 높일 수 있습니다.

 

 

format 함수 사용 방법

format 이라는 이름의 함수를 이용한 방법입니다. format 함수는 중복적으로 변수를 사용해 문자열을 구성할 경우 코드를 간결하게 짤 수 있는 장점이 있습니다.

 

# 문자열 끝에 .format 함수를 붙여 사용
name = "홍길동"
age = 3
str_test = "저 {}은 {} 살 입니다.".format(name, age)
print(str_test)

 

{} 안에 숫자로 위치를 지정하여 사용가능 합니다. 이 말은 format 의 파라미터를 인덱싱하여 사용할 수 있음을 의미합니다.

 

# {}안에 0, 1은 각각 format의 0번째 인자, 1번째 인자의 값이 들어감
name = "홍길동"
age = 3
str_test = "저 {0}은 {1} 살 입니다.".format(name, age)

# 인덱싱을 이용하여 변수명을 중복으로 사용할 필요 없음
str_test = "{0},{1},{0},{0}".format(name, age)
print(str_test)

 

인덱싱 결과

 

또한 format 내에 변수명을 정의한 후 이를 {} 안에 삽입하여 사용할 수 있습니다.

 

# format 내에 변수명 정의하여 {}내에 사용가능
str_test = "저 {name}은 {age} 살 입니다.".format(name = "홍길동", age=3)
print(str_test)

 

 

마무리

문자열을 포매팅하는 작업은 코드를 짜다보면 다양하게 사용합니다. 위 3가지 방식을 모두 익혀두시면 각각의 용도에 따라 코드를 간결하고 직관적으로 작성할 수 있습니다.

 

오늘도 행복한 코딩생활 되시기 바라겠습니다. 감사합니다.

 

 

 

 

댓글