문자열 안에 어떠한 값을 삽입하는 방법인 문자열 formatting을 알아보겠습니다.
% 포매팅
문자열 포맷 코드를 이용해서 포매팅하는 방법이다.
[문자열 포맷 코드]
%s | 문자열 |
%c | 문자 |
%d | 정수 |
%f | 실수 |
%o | 8진수 |
%x | 16진수 |
%% | %문자 |
a = "Hello %s" % "World"
print(a)
# 출력 Hello World
a = "2024.02.%d" % 4
print(a)
# 출력 2024.02.4
# 변수로 대입
date = 4
a = "2024.02.%d" % date
print(a)
# 출력 2024.02.4
문자열 포맷 코드와 변수의 담긴 데이터 값이 같다면 변수를 대입할 수 있다.
# 2개 이상 포매팅
message = "Hello World"
date = 4
a = "%s 2024.02.%d" % (message, date)
print(a)
# 출력 Hello World 2024.02.4
2개 이상 포매팅하는 방법은 () 소괄호로 감싸서 쉼표로 분리해 주면 순서대로 대입이 가능합니다.
point = 100
a = "%d%%" % point
print(a)
# 출력 100%
포맷코드와 "%"를 같이 사용하기 위해서는 %%를 사용해야 한다.
a = "Jutole"
print("%10s" % a)
# 출력 (공백)Jutole
포맷코드 사이에 숫자를 사용하면 전체 길이를 설정할 수 있다. 해당 코드는 전체길이를 10개로 설정한 공간에 "Jutole"이라는 문자열을 대입하였다. 기본적으로 오른쪽으로 정렬이 되어 왼쪽으로 공백이 생긴다.
a = "Jutole"
print("%-10sHello" % a)
# 출력 Jutole Hello
포맷코드 사이 숫자 앞에 - 를 붙여서 사용하게 되면 왼쪽으로 정렬된다.
a = 3.4213423
print("%0.3f" % a)
# 출력 3.421
실수를 포매팅할 때도 사용이 가능합니다. 실수를 포맷하는 코드인 % f 사이에 0.3을 추가하게 되면 소수점 3번째 자리까지만 보여주겠다는 의미이다. 0은 전체길이를 신경 쓰지 않겠다는 의미로 0 없이. 3으로도 사용이 가능합니다.
a = 3.4213423
print("%10.3f" % a)
# 출력 (공백) 3.421
0 대신 10을 입력하면 전체길이를 10으로 만들어서 오른쪽으로 정렬을 하는 모습입니다.
a = 3.4213423
print("%-10.3fHello" % a)
# 출력 3.421 Hello
똑같이 -를 붙이게 되면 왼쪽으로 정렬하게 됩니다.
Format함수 포매팅
format() 함수를 사용해서 더 편리하게 포매팅할 수 있습니다.
a = "Hello {0}".format("World")
print(a)
# 출력 Hello World
b = "2024.02.{0}".format(4)
print(b)
#출력 2024.02.4
c = "Jutole"
print("Hello {0}".format(c))
#출력 Hello Jutole
이런 식으로 % 포매팅했던 방식과 비슷하게 format() 함수로 포매팅이 가능합니다.
a = "Hello {0} {1}".format("World", "Jutole")
print(a)
# 출력 Hello World Jutole
여러 개의 값을 넣을 때는 인덱스번호를 늘려서 사용이 가능합니다.
a = "Hello {message} {name}".format(message = "World", name = "Jutole")
print(a)
# 출력 Hello World Jutole
인덱스 번호로 관리하는 게 불편하다면 네이밍 관리도 가능합니다.
a = "Hello {message} {0}".format("Jutole", message = "World")
print(a)
# 출력 Hello World Jutole
혼용도 가능하지만 인덱스에 넣는 값을 먼저 대입해줘야 한다.
a = "{0:>10}".format("Hello")
print(a)
# 출력 (공백)Hello
콜론을 넣어서 사용하면 전체길이와 정렬 등을 설정할 수 있습니다. > 오른쪽으로 정렬하고 전체길이는 10으로 맞추겠다는 의미입니다.
a = "{0:<10}World".format("Hello")
print(a)
# 출력 Hello World
왼쪽정렬은 <
a = "{0:^10}".format("Hello")
print(a)
# 출력 (공백)Hello(공백)
^ 를 사용하면 중앙정렬도 가능합니다.
a = "{0:@<10}".format("Hello")
print(a)
# 출력 Hello@@@@@
b = "{0:@>10}".format("Hello")
print(b)
# 출력 @@@@@Hello
c = "{0:@^10}".format("Hello")
print(c)
# 출력 @@Hello@@@
정렬 기호 앞에 문자를 입력하면 공백대신에 지정한 문자로 공백이 채워집니다.
a = "{0:@>10.4f}".format(3.4213423)
print(a)
#출력 @@@@3.4213
실수도 똑같이 사용가능합니다. 다만 f라고 표시해주어야 한다는 점을 주의해 주세요.
a = "{{{0}}}".format("Jutole")
print(a)
#출력 {Jutole}
format() 함수를 사용해서 포매팅하는 경우에 { 또는 } 문자를 사용하려면 {{, }} 두 번씩 사용하면 된다.
f 문자열 포매팅
Python 3.6 이후 버전부터 사용가능한 포매팅 방법입니다. 문자열에 변수를 직접 대입가능한 방법으로써 매우 편리한 포매팅 방법입니다.
a = f"Hello World"
print(a)
#출력 Hello World
이런 식으로 기존 문자열 앞에 f 접두사를 붙여서 사용하게 되면 f 문자열 포매팅이 가능한 문자열로 사용할 수 있습니다.
a = "Hello"
b = f"{a} World"
print(b)
#출력 Hello World
date = 4
print(f"2024.02.{date}")
#출력 2024.02.4
사용은 이렇게 할 수 있습니다. 변수를 직접 대입해서 사용을 하는 모습입니다.
date = 4
print(f"2024.02.{date+1}")
#출력 2024.02.5
f 문자열 포매팅은 중괄호 안에서 변수를 계산식과 함께 사용이 가능한 표현식을 지원하기 때문에 위처럼 사용도 가능합니다.
a = 'Hello'
print(f"{{{a:@>10}}}")
#출력 {@@@@@Hello}
위에서 했던 전체길이 설정, 정렬 등등 똑같이 사용이 가능합니다.
[다음 글]
https://jutole.tistory.com/127
'Python > study' 카테고리의 다른 글
[Python] 7 - python 리스트 자료형 (0) | 2024.02.05 |
---|---|
[Python] 6 - python 문자열 내장함수 (1) | 2024.02.04 |
[Python] 4 - python 문자열 데이터 (0) | 2024.02.02 |
[Python] 3 - python 숫자 데이터 타입 (0) | 2024.02.01 |
[Python] 2 - python editor 알아보기 (1) | 2024.01.31 |