[Python] string 포멧팅(Formatting)과 보간법(interpolation)


Study/Python  2020. 1. 22. 09:00

안녕하세요. 명월입니다.


이 글은 Python에서 string 포멧팅(Formatting)과 string 보간법(interpolation)에 관한 글입니다.


원래 순서상 변수나 제어문 뒤 쪽에서 소개를 했어야 맞는 건데, 어쩌다 보니 순서가 밀려서 여기까지 왔습니다.

string 포멧팅이란 정수 타입등을 string 타입으로 변환하거나 string의 글에 string 값을 대입시키기 위한 방법입니다.


포멧팅은 퍼센트 기호(%)로 사용되며 퍼센트 기호(%) 앞의 문자열은 format 문자열, 퍼센트 기호(%)의 두는 치환할 값이 됩니다. 그리고 맨 앞에 등호(=) 기준으로 왼쪽에 값을 대입하는 것입니다.

data = "hello %s" % "world";
print(data);

위 format 문자열에 치환하는 영역은 역시 퍼센트로 구분합니다. 그리고 %뒤로 입력되는 치환 값은 단일 값은 넣거나 복수의 값이면 튜플로 입력하면 됩니다.

코드 설명
%s 문자열(String)
%c 문자 1개(character)
%d 정수(Integer)
%f 부동소수(floating-point)
%o 8진수
%x 16진수
data = "The humidity is %d%% in %s" % (10, 'Now');
pritn(data);

참고로 포멧팅 안에서 %기호를 사용하고 싶으면 %%로 사용합니다.


그리고 포멧팅으로 문자열 정렬도 가능합니다.

# 10칸의 문자열 공간에서 오른쪽 정렬한다. 만약 10칸을 넘어서면 정렬를 취소한다.
print("^^^%10s$$$" % "hello!");
# 10칸의 문자열 공간에서 윈쪽 정려한다. 만약 10칸을 넘어서면 정렬를 취소한다.
print("^^^%-10s$$$" % "hi!");
# 10칸의 문자열 공간에서 오른쪽 정렬한다. 만약 10칸을 넘어서면 정렬를 취소한다. (정수 타입)
print("^^^%10d$$$" % 12);
# 10칸의 문자열 공간에서 오른쪽 정렬한다. 빈 공간은 0으로 채운다. (정수 타입)
print("^^^%010d$$$" % 12);
# 10칸의 문자열 공간에서 오른쪽 정렬한다. 그리고 실수의 소수점 4번째까리 표현한다. 만약 10칸을 넘어서면 정렬를 취소한다. (실수 타입)
print("^^^%10.4f$$$" % 12.1);
# 10칸의 문자열 공간에서 오른쪽 정렬한다. 그리고 실수의 소수점 4번째까리 표현한다. 빈 공간은 0으로 채운다.  (실수 타입)
print("^^^%010.4f$$$" % 12.1);

그리고 문자열 타입(str)은 format 함수가 있습니다. format 함수를 이용해서 위치의 파라미터와 키워드 파라미터로 format이 가능합니다.

# format 함수를 이용해 위치 파라미터로 문자열을 작성한다.
print("This is {0}. {1}".format("apple", "hello!!"));
# format 함수를 이용해 키워드 파라미터로 문자열을 작성한다.
print("This is {name}".format(name="keyboard"));
# format 함수를 이용해 문자열을 정렬하여 작성한다. (정수와 실수 타입은 위 정렬 문법을 사용하면 된다.)
print("^^^{0:10.4f}$$$".format(12.2));
# 10칸의 문자열 공간에서 오른쪽 정렬한다. 만약 10칸을 넘어서면 정렬를 취소한다.
print("^^^{0:>10}$$$".format("hello!"));
# 10칸의 문자열 공간에서 왼쪽 정렬한다. 만약 10칸을 넘어서면 정렬를 취소한다.
print("^^^{0:<10}$$$".format("hi!"));

그리고 C#처럼 string 보간법이 있습니다.

링크 - [C#] String 보간법(interpolation)


python에서는 보간법을 문자열 앞에 f를 붙이면 사용할 수 있으며 정렬은 위 정렬 문법과 같습니다.

data = "hello";
# {의 표시는 {{, }의 표시는 }}로 나타낸다. 보간법은 {data}로 data 변수의 값을 출력한다.
print(f'{{{data}}}');
# 10칸의 문자열 공간에서 오른쪽 정렬한다. 만약 10칸을 넘어서면 정렬를 취소한다.
print(f'^^^{data:>10}$$$');
# 10칸의 문자열 공간에서 왼쪽 정렬한다. 만약 10칸을 넘어서면 정렬를 취소한다.
print(f'^^^{data:<10}$$$');
data = 12.3;
# 문자열을 정렬하여 작성한다. (정수와 실수 타입은 위 정렬 문법을 사용하면 된다.)
print(f'^^^{data:10.4f}$$$');

여기까지 Python에서 string 포멧팅(Formatting)과 string 보간법(interpolation)에 대한 설명였습니다.


궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.