>  기사  >  백엔드 개발  >  Python의 str.format()에 대한 자세한 설명

Python의 str.format()에 대한 자세한 설명

高洛峰
高洛峰원래의
2017-03-13 09:22:242465검색

이 글은 주로 python프로그래밍에서 str.format()의 기본 구문과 고급 사용법을 자세히 소개합니다. 좋아요

1. str.format

Python에서는 +를 사용하여문자열을 연결할 수 있습니다. 단순 이 경우 이 방법이 잘 작동할 수 있습니다. 그러나 복잡한 문자열 연결을 수행해야 할 때 여전히 +를 사용하여 완료하면 코드가 모호해질 뿐만 아니라 코드를 유지 관리하기도 어려워집니다. 이때 이 방법은 충분하지 않습니다.

예를 들어 다음과 같은 기록을 인쇄하려고 합니다.

사용자:John이 작업을 완료했습니다:시간:13:30에 결제 :00

더하기 기호를 사용하면 다음과 같은 형식이 됩니다.


print "User:" + user_name + " has completed Action:" + \ 
      action_name + " at Time:" + current_time

돌아가서 이 코드를 읽으면 미래에는 출력 형식을 직관적으로 볼 수 있고 수정하기가 상대적으로 번거롭습니다.

대신 %를 사용할 수 있습니다:


print "User:%s has completed Action:%s at Time:%s" % \ 
    (user_name, action_name, current_time)

이번에는 코드가 훨씬 더 명확하고 간결해졌습니다.

그러나 Python은 더 공식적으로 권장되는 방법이기도 한 또 다른 간단하고 우아한 구현 방법을 제공합니다. 문자열 형식을 지정하려면 str.format()을 사용하세요.


print "User:{} has completed Action:{} at Time:{}".format( 
    user_name, action_name, current_time)

str.format은 간단한 시나리오에서 사용할 수 있으며 번거로운 문자열 연결 작업 없이 복잡한 문자열 교체를 수행할 수도 있습니다. Python의 내장 유형 str과 unicode는 모두 문자열 형식 지정을 위한 str.format() 사용을 지원합니다.

다음에는 str.format()의 구체적인 사용법에 대해 자세히 논의하겠습니다.

2. str.format의 기본 구문

형식 문자열은 대체할 문자열인 대체 필드를 중괄호 {}로 묶습니다. . 중괄호로 묶이지 않은 문자는 결과에 그대로 표시됩니다.

2.1 위치 인덱스 사용

다음 두 가지 작성 방법은 동일합니다.

"Hello, {} 및 {}!".format ("John", "Mary")

"안녕하세요, {0} 그리고 {1}!".format("John", "Mary")

중괄호 안 대상 문자열의 인덱스를 쓰거나 생략할 수 있습니다. 생략할 경우 형식 괄호 안에 포함된 대상 문자열의 순서대로 교체가 수행됩니다.

2.2. 키워드 인덱스 사용

대상 문자열을 위치별로 지정하는 것 외에도 키워드별로 지정할 수도 있습니다.

예:


"Hello, {boy} and {girl}!".format(boy="John", girl="Mary")

키워드 인덱스를 사용하면 매개변수의 위치에 신경 쓸 필요가 없다는 장점이 있습니다. 문자열의 결과를 한눈에 볼 수 있습니다. 향후 코드 유지 관리 시 문자열에 대해 해당 매개변수를 하나씩 검색할 필요 없이 해당 매개변수를 빠르게 수정할 수 있습니다.

참고: 문자열 자체에 중괄호가 포함된 경우 이를 두 번 반복하여 이스케이프해야 합니다. 예를 들어 문자열 자체에 {가 포함되어 있으면 이것이 일반 문자이고 대체 필드를 둘러싸는 데 사용되는 중괄호가 아님을 Python에 알리기 위해 간단히 {{로 다시 작성합니다.

3.str.format 고급 구문

str.format은 일상 작업에서 접하는 형식화된 출력을 완성할 만큼 매우 강력합니다 . 이 방법에 능숙하면 향후 문자열 처리를 위한 견고한 기반을 마련하고 많은 시간을 절약할 수 있습니다.

3.1 매개변수의 속성 또는 요소

에 액세스 str.format을 사용하여 문자열 형식을 지정할 때 일반적으로 대상 문자열을 형식 메서드에 매개변수로 전달합니다. 실제로 형식 문자열에서 매개변수의 속성이나 요소에 액세스할 수도 있습니다.

"My car is {0.color}.".format(black_car)
"첫 번째 학생은 {student[0]}.".format(student=stu_list)
"John은 {d[john]}세입니다.".format(d=age_dict)

3.2.파라미터 출력 변환

파라미터의 문자열 출력은 기본적으로 자체 형식 방식으로 구현됩니다. 즉, Python은 대체 필드 대신 매개변수의 형식 출력을 사용합니다. 매개변수를 변환하기 위해 str() 또는 repr()을 호출하려면 변환 플래그를 추가하면 됩니다:


# call str() on argument
"It's a {0!s}."

#call repr() on argument
"We can get info from {name!r}."

4. 일반 형식

형식 문자열의 일반 형식은 다음과 같습니다.

"... {field_name!conversion:format_spec} ..."

위 코드에서 볼 수 있듯이 형식 문자열은 field_name, 변환, format_spec의 세 부분으로 나눌 수 있으며 각각 대체 필드 이름(인덱스), 변환 플래그 및 형식 설명에 해당합니다. 그 중 필드명은 필수이고, 후자 2개는 선택사항입니다. 느낌표 뒤에는 변환 플래그가 나오고, 콜론 뒤에는 형식 설명이 나옵니다.

앞서 언급했듯이 필드 이름은 위치 인덱스 또는 키워드 인덱스가 될 수 있습니다. 필드 이름 뒤에는 속성에 액세스하려면 점을, 요소에 액세스하려면 대괄호를 사용할 수 있습니다.

여기에서는 형식 설명(format_spec)에 중점을 둡니다.

형식 설명에는 채우기, 정렬, 부호, 너비, 정밀도, 유형 등 6가지 옵션이 포함되어 있습니다. 위치 관계는 다음과 같습니다.

[[fill]align][sign][#][0][width][,][.precision][type]
fill
은 다음과 같습니다. 모든 문자, 기본값은 공백입니다.

align
은 최소 너비가 지정된 경우에만 유효합니다.

b9ad84f66ee821931b305effef7feb07 오른쪽 정렬
= 숫자에만 유효합니다. 예를 들어 +0001234
^ 가운데- 정렬
부호
숫자에만 유효함

+ 모든 숫자에 부호가 있음
- 음수만 부호가 있음(기본 옵션)
즉, 양수 앞에 공백이 옵니다. , 음수 앞에는 공백이 옵니다. 부호 있는
'#'
은 정수에만 유효합니다.

는 2진수, 8진수, 16진수 값 앞에 해당 0b, 0o, 0x를 자동으로 추가합니다.

','
3개의 숫자 사이에 , 구분 기호를 자동으로 추가합니다.

너비
최소 너비를 정의하는 십진수입니다. 지정하지 않으면 콘텐츠의 너비에 따라 결정됩니다.

정렬을 지정하지 않은 경우 너비 앞에 0을 추가하여 자동으로 0을 채울 수 있습니다. 이는 채우기를 0으로 설정하고 =로 정렬하는 것과 같습니다.

정밀도
는 부동 소수점 숫자의 정밀도 또는 문자열의 최대 길이를 결정하는 데 사용됩니다. 정수 값에는 사용할 수 없습니다.

type
은 매개변수 유형을 결정하며 기본값은 문자열인 s입니다.

정수 출력 유형:

b: 바이너리 형식으로 출력
c: 정수를 해당 유니코드 문자로 변환
d: 10진수로 출력(기본 옵션)
o: 8진수로 출력
x: 16진수 소문자로 출력
숫자

10진수 부동 소수점 수 출력 유형:

e: 지수 표시를 사용하여 출력; , e를 사용하여 지수 부분을 나타냅니다. 기본 정밀도는 6입니다

E: e는 동일하지만 대문자 E를 사용하여 지수 부분을 나타냅니다.
f: 값을 고정 소수점 형식으로 출력합니다. 기본 정밀도는 6입니다.
F: f와 동일합니다.
g: 주어진 정밀도 p >에 대한 일반 형식, 값의 p자리 유효 숫자를 가져와서 고정 소수점 또는 과학용으로 출력합니다. 표기법(기본 옵션)
G: 일반 형식; g와 동일, 값이 너무 큰 경우 E를 사용하여 지수 부분을 나타냅니다.
n: g와 동일하지만 현재 환경의 구분 기호를 사용하여 구분합니다. 각 3자리 숫자
%: 백분율 표시를 사용하여 값을 출력하고 f 표시를 설정합니다

위 내용은 Python의 str.format()에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.