멋진 파이썬 f-문자열

Python f-string의 모든 기능을 마스터하는 방법 배우기

C05348A3-9AB8-42C9-A6E0-81DB3AC59FEB
           

Python f-string의 놀라운 힘

형식화된 문자열 리터럴( f-문자열 이라고도 함)은 Python 3.6부터 사용되어 왔으므로 지금쯤에는 들어보셨을 것입니다.

텍스트 및 숫자 서식 지정

F-문자열은 Python의 형식 사양 Mini-Language 를 지원하므로 많은 형식 지정 작업을 수정자에 포함할 수 있습니다. 그것은 우리가 텍스트를 정렬 또는 중앙에 배치하고, 선행 0/공백을 추가하고, 천 단위 구분 기호를 설정하는 등의 작업을 수행할 수 있도록 합니다. 다음은 몇 가지 예입니다.

pi = 3.1415926
print(f'Pi is approximately equal to {pi:.2f}')
$ Pi is approximately equal to 3.14
 
id = 1
print(f"The id is {id:03d}")
$ The id is 001
 
N = 1000000000
print(f'His net worth is ${N:,d}')
$ His net worth is $1,000,000,000
text = "hello world"
 
# Center text:
print(f"{text:^15}")
$ ' hello world '
 
number = 1234567890
 
# Set separator
print(f"{number:,}")
$ 1,234,567,890
 
number = 123
# Add leading zeros
print(f"{number:08}")
$ 00000123

중첩된 F-문자열

기본 f-문자열이 형식화 요구 사항에 충분하지 않은 경우 서로 중첩할 수도 있습니다. 예를 들어 float 형식을 지정하고 문자열을 오른쪽 정렬할 수 있습니다.

number = 254.3463
print(f"{f'${number:.3f}':>10s}")
$ ' $254.346'

날짜 및 시간 형식

f-문자열을 사용하여 숫자 형식을 적용하는 것은 매우 일반적이지만 날짜 및 타임스탬프 문자열의 형식도 지정할 수 있다는 사실을 알고 계셨습니까?

f-문자열은 datetime.strftime 메서드를 사용한 것처럼 날짜와 시간의 형식을 지정할 수 있습니다. 문서에 언급된 몇 가지 형식보다 더 많은 형식이 있다는 것을 깨달았을 때 이것은 매우 좋습니다. Python의 strftime은 기본 C 구현에서 지원하는 모든 형식도 지원합니다. 이는 플랫폼에 따라 다를 수 있으므로 문서에서 언급하지 않습니다. 어쨌든 이러한 형식을 활용할 수 있으며 예를 들어 %F(%Y-%m-%d에 해당) 또는 %T(%H:%M:%S에 해당)를 사용할 수 있습니다. 언급된 %x 및 %X는 각각 로케일에서 선호하는 날짜 및 시간 형식입니다. 이러한 형식의 사용은 분명히 f-문자열에만 국한되지 않습니다. 전체 형식 목록은 Linux 맨페이지 를 참조하십시오.

from datetime import datetime
today = datetime.today()
 
print(f"{today:%Y-%m-%d}")
$ 2022-03-11
 
print(f"{today:%Y}")
$ 2022
 
print(f"Today is {today}")
$ Today is 2021-07-31 18:20:48.956829
 
print(f"Today is {today:%B %d, %Y}")
$ Today is July 31, 2021
 
print(f"Today is {today:%m-%d-%Y}")
$ Today is 07-31-2021

적절한 탈출

물론 몇몇 캐릭터를 다룰 때 약간의 주의가 필요한 몇 가지 상황이 있습니다. 다음은 몇 가지 예입니다.

name = "Paul"
 
print(f'My name is \'{name}\'.')
$ My name is 'Paul'.
 
print(f'My name is {{name}}.')
$ My name is {name}.
 
print(f'My name is {{{name}}}.')
$ My name is {Paul}.
 
print(f'My name is \\{name}\\.')
$ My name is \Paul\.

결론

% 또는 format() 메서드와 같은 기존 C 스타일 형식보다 읽기가 더 쉬울 뿐만 아니라 f-문자열도 최적화되고 처리 속도가 훨씬 빨라집니다. 따라서 이것은 확실히 성공적인 솔루션입니다.

댓글을 게시했습니다: 0