Python/study

[Python] 5 - python 문자열 formatting

주톨 2024. 2. 4. 21:23
728x90

 

 

 

문자열 안에 어떠한 값을 삽입하는 방법인 문자열 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] 6 - python 문자열 내장함수

https://jutole.tistory.com/126 [Python] 5 - python 문자열 formatting 문자열 안에 어떠한 값을 삽입하는 방법인 문자열 formatting을 알아보겠습니다. % 포매팅 문자열 포맷 코드를 이용해서 포매팅하는 방법이다

jutole.tistory.com