Python 문자열 형식 지정에 대한 자세한 소개

不言
풀어 주다: 2019-03-26 11:15:07
앞으로
2175명이 탐색했습니다.

이 글은 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

  • "{!r}"로 대체할 수 있습니다(변수에 대해 )
  • "{!s}" 변수에 str()을 호출합니다
  • "{!a}" 변수에 ascii()를 호출합니다

콜론 뒤의 부분은 출력 스타일을 정의합니다

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿