안녕하세요. 명월입니다.
이 글은 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)에 대한 설명였습니다.
궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.
'Study > Python' 카테고리의 다른 글
[Python] 데이터 베이스(mariaDB)를 연결하여 사용하는 방법 (0) | 2020.01.23 |
---|---|
[Python] 비동기IO의 async/await(asyncio)를 사용하는 방법 (0) | 2020.01.18 |
[Python] Socket 통신 (0) | 2020.01.13 |
[Python] 쓰레드(Thread)과 lock 그리고 데드락 (0) | 2020.01.06 |
[Python] IO (파일 입출력) (0) | 2019.12.23 |
[Python] 클래스 상속 (0) | 2019.12.20 |
[Python] 클래스 프로퍼티 (Property) (1) | 2019.12.19 |
[Python] 클래스 함수(class method)와 덕 타이핑 그리고 특수 메서드 (0) | 2019.12.18 |