이 글은 Python 문자열의 형식화에 대해 자세히 소개합니다. 필요한 친구들이 참고할 수 있기를 바랍니다.
많은 사람들이 문자열 형식을 지정할 때 "%s" % v 구문을 사용한다고 생각합니다. PEP 3101은 보다 고급 형식 지정 방법인 str.format()을 제안하고 이전 %s 형식 지정 구문을 대체하는 Python 3의 표준이 되었습니다. CPython은 2.6부터 이 방법을 구현했습니다(다른 통역사는 이를 검증하지 않았습니다).
format()
새로운 format() 메소드는 실제로 매우 풍부한 기능을 갖춘 템플릿 엔진(Template Engine)의 단순화된 버전에 가깝습니다.
템플릿의 대체 변수는 {}로 둘러싸여 있으며 :으로 두 부분으로 구분됩니다. 그 중 후반부인 format_spec에 대해서는 나중에 별도로 논의하겠습니다.
첫 번째 부분에는 세 가지 용도가 있습니다.
이것은 함수 호출의 매개변수 범주와 일치합니다
print("{} {}".format("Hello", "World")) # 等同于以下几种 print("{0} {1}".format("Hello", "World")) print("{hello} {world}".format(hello="Hello", world="World")) print("{0}{1}{0}".format("H", "e")) # Hello World # Hello World # Hello World # HeH
또한 함수 매개변수 unpacking과 마찬가지로 unpacking 작업도 format()
print("{author}.{city}".format(**{"author": "Miracle", "city": "上海"})) print("{} {}".format(*["Miracle", "上海"])) Miracle.上海 Miracle 上海
에서 직접 사용할 수도 있습니다. 템플릿에서는 .identifier 및 [key]를 통해 변수의 속성이나 값을 얻을 수도 있습니다("{} {} ""{0}{1}")
data = {'author': 'Miracle', 'like': 'papapa'} print("Author: {0[author]}, Like: {0[like]}".format(data)) langs = ["Python", "Ruby"] print("{0[0]} vs {0[1]}".format(langs)) print("\n====\nHelp(format):{.__doc__}".format(str.format)) # Name: Python, Score: 100 # Python vs Ruby # ==== # Help(format): # S.format(*args, **kwargs) -> str
와 동일합니다. 강제로 대체된 변수를 ! + r|s|a
콜론 뒤의 부분은 출력 스타일을 정의합니다
align은 정렬 방향을 나타냅니다. 일반적으로 너비가 일치해야 하는 가 사용되고 fill은 채워진 문자입니다(기본값은 공백).
for align, text in zip("<^>", ["left", "center", "right"]): # 务必看懂这句话 print("{:{fill}{align}16}".format(text, fill=align, align=align)) print("{:0=10}".format(100)) # = 只允许数字 # left<<<<<<<<<<<< # ^^^^^center^^^^^ # >>>>>>>>>>>right # 0000000100
동시에 {}가 스타일 설정에 중첩될 수 있지만 반드시 키워드로 지정되며 한 수준만 중첩될 수 있습니다.
다음 단계는 기호 스타일입니다. +|-|' '는 각각 숫자에 필수 기호가 필요한지 여부를 지정합니다(공백은 숫자가 양수일 때 +가 표시되지 않지만 공백이 예약되어 있음을 의미함)
print("{0:+}\n{1:-}\n{0: }".format(3.14, -3.14)) # +3.14 # -3.14 # 3.14
가 사용됩니다. 특수 형식(2진수, 16진수 등)으로 숫자를 표현하기 위해 접두사 기호가 필요한지 여부
쉼표는 천 자리에서 숫자를 구분해야 하는지 여부를 나타내는 데에도 사용됩니다
0은 이전의 {:0=과 동일합니다. } 공백을 채우기 위해 오른쪽 정렬되고 0으로 채워짐
print("Binary: {0:b} => {0:#b}".format(3)) print("Large Number: {0:} => {0:,}".format(1.25e6)) print("Padding: {0:16} => {0:016}".format(3)) # Binary: 11 => 0b11 # Large Number: 1250000.0 => 1,250,000.0 # Padding: 3 => 0000000000000003
마지막으로 Xiaopang은 소수점 정밀도, .n 및 형식 지정 유형과 같은 친숙한 문제를 소개합니다.
여기에는 몇 가지 예만 나와 있습니다. 자세한 내용은 설명서를 참조하세요.
from math import pi print("pi = {pi:.2}, also = {pi:.7}".format(pi=pi)) # pi = 3.1, also = 3.141593
Integer
for t in "b c d #o #x #X n".split(): print("Type {0:>2} of {1} shows: {1:{t}}".format(t, 97, t=t)) # Type b of 97 shows: 1100001 # Type c of 97 shows: a # Type d of 97 shows: 97 # Type #o of 97 shows: 0o141 # Type #x of 97 shows: 0x61 # Type #X of 97 shows: 0X61 # Type n of 97 shows: 97
Float
for t, n in zip("eEfFgGn%", [12345, 12345, 1.3, 1.3, 1, 2, 3.14, 0.985]): print("Type {} shows: {:.2{t}}".format(t, n, t=t)) # Type e shows: 1.23e+04 # Type E shows: 1.23E+04 # Type f shows: 1.30 # Type F shows: 1.30 # Type g shows: 1 # Type G shows: 2 # Type n shows: 3.1 # Type % shows: 98.50%
String(기본값)
try: print("{:s}".format(123)) except: print("{}".format(456)) # 456
이 글은 여기까지입니다. 더 많은 흥미로운 콘텐츠를 팔로우하세요. PHP 중국어 웹사이트의 Python 비디오 튜토리얼 칼럼!
위 내용은 Python 문자열 형식 지정에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!