English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
문자열 format() 메서드는 지정된 값을 포맷화하고 문자열의 대체 문자에 삽입합니다。
대체 문자는 중괄호 {}로 정의됩니다. 대체 문자에 대한更多信息는 "대체 문자" 섹션을 참조하세요。
format() 메서드는 포맷화된 문자열을 반환합니다。
format() 메서드의 문법은 다음과 같습니다:
template.format(p0, p1, ..., k0=v0, k1=v1, ...
여기서, p0, p1,...은 위치 매개변수와 k0, k1,...가 있는 키워드 매개변수 v0, v1,....
그리고, template은 형식 코드와 매개변수 대체 문자의 복합물입니다.
format() 메서드는 불어한 수의 매개변수를 취할 수 있습니다. 그러나 두 가지 유형의 매개변수로 나뉩니다:
위치 매개변수 -대괄호 {index} 내의 매개변수 인덱스를 통해 접근할 수 있는 매개변수 목록
키워드 매개변수 -키=밸류 타입의 매개변수 목록은 대괄호 {key} 내의 매개변수 키를 통해 접근할 수 있습니다
format() 메서드는 형식화된 문자열을 반환합니다.
format()는 전달받은 매개변수의 타입을 읽고 문자열에 정의된 형식 코드에 따라 형식화합니다.
여기서 매개변수 0은 문자열 "Adam"이고 매개변수1이 floating-point number입니다230.2346。
주의: Python에서 매개변수 목록은 0부터 시작합니다.
문자열 "Hello {0}, your balance is {1:9.3f}"은 템플릿 문자열입니다. 형식화를 위한 형식 코드가 포함되어 있습니다.
대括号은 단순히 배치할 매개변수의 대체 문자입니다. 위의 예제에서 {0}은 "Adam"의 대체 문자입니다.1:9.3f}은230.2346의 대체 문자로 사용됩니다.
템플릿 문자열이 format() 매개변수를 참조하는 이유는1}, 따라서 이 매개변수는 위치 매개변수입니다. 또한, {}와 Python이 내부에서 숫자로 변환하므로 숫자 없이도 참조할 수 있습니다.
내부에서
"Adam"는 0번째로 개매개변수이므로 {0} 위치에 두고 있습니다. {0}에는 다른 형식 코드가 없기 때문에 다른 작업을 수행하지 않습니다.
그러나 첫 번째 매개변수230.2346이렇지 않습니다. 여기서 {1:9.3f}을230.2346그 위치에 두고 실행합니다9.3f 연산자
f가 형식을 처리하는 부분입니다. 올바르게 지정하지 않으면 오류를 발생시킵니다.
“.” 이전의 부분(9주어진 숫자(230.2346가능한 가장 작은 너비(/채우기. 이 경우에 대해230.2346최소한 할당됩니다9위치, “.” 포함됩니다.
해당 옵션을 지정하지 않으면, 나머지 공백의 우측에 맞춥니다. (문자열의 경우, 왼쪽에 맞축니다.)
“.” 이후의 부분(3소수점 부분(2346잘린 숫자를 주어진 숫자로 잘립니다. 이 경우에 대해3346이후로 잘립니다2346。
잔여 숫자(46을 반올림하여 출력합니다235。
위에서 사용한 동일한 예제를 통해 키워드와 위치 매개변수 사이의 차이를 보여줍니다.
여기서 우리는 매개변수뿐만 아니라 키밸류를 매개변수로 사용합니다. 즉 name="Adam"와 blc=230.2346。
이 매개변수는 그들의 키로 {name}와 {blc}로 알려져 있기 때문에9.3f}를 참조하는 것이기 때문에 그들은 키워드 또는 이름 매개변수라고 불립니다.
내부에서
대체 기호 {name}는 name의 값을 대체합니다-“Adam”。 다른 포맷 코드가 없기 때문에 “Adam”을 배치했습니다.
파라미터 blc = 230.2346, 대체 기호 {blc:9.3f}는 값을 대체합니다230.2346를 대체하기 전에, 이전 예제와 같이 그에 대해 수행9.3f 연산자
출력230.235。소수점 부분은3비后被 截断,나머지 숫자는 반올림됩니다. 마찬가지로, 총 너비가 배분됩니다9، 왼쪽에 두 공백을 남겨둡니다.
format() 메서드는 간단한 대체 기호를 사용하여 포맷화할 수 있습니다.
print("Hello {}, your balance is {}. 230.2346)) # 위치 매개변수 print("Hello {0}, your balance is {1}.format("Adam", 230.2346)) # 키워드 매개변수 print("Hello {name}, your balance is {blc}.".format(name="Adam", blc=230.2346)) # 혼합 매개변수 print("Hello {0}, your balance is {blc}.".format("Adam", blc=230.2346))
프로그램을 실행할 때, 모든 출력은 동일합니다:
Hello Adam, your balance is 230.2346. Hello Adam, your balance is 230.2346. Hello Adam, your balance is 230.2346. Hello Adam, your balance is 230.2346.
주의:혼합 매개변수는 항상 위치 매개변수 뒤에 키워드 매개변수가 따라야 합니다.
아래에 제공된 형식 기호를 사용하여 숫자 형식을 설정할 수 있습니다:
타입 | 의미 |
---|---|
d | 소수 정수 |
c | 상응하는 유니코드 문자 |
b | 2진 형식 |
o | 8진 형식 |
x | 16진 형식(소문자) |
X | 16진 형식(대문자) |
n | “d”와 동일합니다. 숫자 구분자의 현재 언어 환경 설정을 사용하지 않습니다. |
e | 지수 표현법. (소문자 e) |
E | 지수 기호(대문자 E) |
f | 정점 기호를 표시합니다. (기본 값:6, |
F | “f”와 동일합니다. “inf”를 “INF”로, “nan”을 “NAN”으로 표시합니다. |
g | 6, |
G | “g”와 동일합니다. 큰 숫자이면, “E”로 전환됩니다. |
% | 배수.100으로 시작하고 %으로 끝나는 값. |
# 정수 매개변수 print("数字:{:d}".format(123)) # 浮点参数 print("浮点数:{:f}".format(123.4567898)) # 八进制,二进制和十六进制格式 print("bin: {0:b}, oct: {0:o}, hex: {0:x}".format(12))
프로그램을 실행할 때, 출력은 다음과 같습니다:
数字: 123 浮点数:123.456790 bin: 1100, oct: 14, hex: c
# 最小宽度的整数 print "{:5d}".format(12)) # 宽度对于比填充更长的数字不起作用 print "{:2d}".format(1234)) # 浮点数的填充 print "{:8.3f}".format(12.2346)) # 最小宽度为0的整数 print("{:05d}".format(12)) # 填充用0填充的浮点数 print("{:08.3f}".format(12.2346))
프로그램을 실행할 때, 출력은 다음과 같습니다:
121234 12.235000120012.235
이곳에서,
在第一个语句中,{:5d}采用整数参数并指定最小宽度5。由于未指定对齐方式,因此它向右对齐。
在第二个语句中,您可以看到宽度(2)小于数字(1234),因此它不需要在左边留任何空格,也不会截断该数字。
与整数不同,浮点数具有整数和小数部分。 并且,定义为该数字的最小宽度是整个包括“.”的两个部分。
在第三条语句中,{:8.3f}将小数部分截断为3位,四舍五入最后两位数字。而且,该数字现在为12.235,整个宽度为8,在左侧保留2个位置。
如果要用零填充其余位置,请在格式说明符之前放置零。它适用于整数和浮点数:{:05d}和{:08.3f}。
# 显示+号 print "{:+f} {:+f}".format(12.23, -12.23)) # 仅显示-号 print "{:-f} {:-f}".format(12.23, -12.23)) # 显示+号的空格 print("{: f} {: f}".format(12.23, -12.23))
프로그램을 실행할 때, 출력은 다음과 같습니다:
+12.230000 -12.230000 12.230000 -12.230000 12.230000 -12.230000
将数字指定一定的宽度时,运算符<,和用于对齐。^>=
타입 | 의미 |
---|---|
< | 왼쪽 정렬된 나머지 공간 |
^ | 중앙 정렬된 나머지 공간 |
> | 와 나머지 공간 우측 정렬 |
= | 부호를 포함한 메우기(+)(-)좌측으로 강제 |
# 우측 정렬된 정수 print "{:5d}".format(12)) # 중앙 정렬된 부동소수점 수 print("{:^10.3f}".format(12.2346)) # 정수 왼쪽 정렬, 0으로 메우기 print("{:<05d}".format(12)) # 중앙 정렬된 부동소수점 수 print("{:=8.3f}".format(-12.2346))
프로그램을 실행할 때, 출력은 다음과 같습니다:
12 12.235 12000- 12.235
주의:세 번째 예제에서, 0으로 메우는 왼쪽 정렬이 정수에 문제가 있을 수 있으며, 이 예제는 다음과 같이 반환합니다:12000이 대신12。
숫자로 사용할 때, format()와 유사한 방식으로 문자열을 형식화할 수 있습니다.
# 왼쪽 정렬된 문자 메우기 print "{:5".format("cat")) # 우측 정렬된 문자 메우기 print "{:>}}5".format("cat")) # 중앙 정렬 문자열 채우기 print("{:^5".format("cat")) # 중앙 정렬 문자열 채우기 #와 '*填充字符 print "{:*^5".format("cat"))
프로그램을 실행할 때, 출력은 다음과 같습니다:
cat cat cat *cat*
# 문자열을 자르기 위해3글자 print "{:.3".format("caterpillar")) # 문자열을 자르기 위해3글자 #와 채우기 print "{:5.3".format("caterpillar")) # 문자열을 자르기 위해3글자 # 채우기와 중앙 정렬 print("{:^5.3".format("caterpillar"))
프로그램을 실행할 때, 출력은 다음과 같습니다:
catcat cat
Python 내부 getattr()는 ".__age" 형식으로 클래스 멤버를 사용하며, "[index]" 형식의 딕셔너리 멤버를 찾기 위해 __getitem__()를 사용합니다.
# define Person class class Person: age = 23 name = "Adam" # age 포맷화 print("{p.name}年龄是 : {p.age}".format(p=Person()))
프로그램을 실행할 때, 출력은 다음과 같습니다:
Adam's 年龄是 : 23
여기서 Person 객체를 키워드 매개변수 p로 전달합니다.
템플릿 문자열에서 .name과 .age를 사용하여 Person의 name과 age에 접근합니다.
# Person 딕셔너리 정의 person = {'age': 23, 'name': 'Adam'} # age 포맷화 print("{p[name]}'s age is: {p[age]}".format(p=person))
프로그램을 실행할 때, 출력은 다음과 같습니다:
Adam's age is: 23
class와 유사하게, person 딕셔너리를 키워드 매개변수 p로 전달합니다.
템플릿 문자열에서 [name]와 [age]를 사용하여 사람의 name과 age에 접근합니다.
Python에서 딕셔너리를 str.format()를 사용하여 더 간단하게 포맷화할 수 있는 방법이 있습니다.**mapping))
# Person 딕셔너리 정의 person = {'age': 23, 'name': 'Adam'} # age 포맷화 print("{name}'s age is: {age}".format(**person))
** 는 포맷 매개변수(최소 필드 너비)입니다.
또한, 정밀도, 정렬, 채우기 문자를 위치 또는 키워드 매개변수로 동적으로 전달할 수 있습니다.
# 동적 문자열 형식 템플릿 string = "{{:{fill}{align}{width}}}" # 형식 코드를 매개변수로 전달 print(string.format('cat', fill='*', align='^', width=5)) # 동적 실수 포맷 템플릿 num = "\{:{align}{width}.{precision}f}" # 형식 코드를 매개변수로 전달 print(num.format(123.236, align='<'와 width=8, precision=2))
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
**cat**123.24
이곳에서,
첫 번째 예제에서, "cat"은 형식화될 위치 매개변수입니다. 마찬가지로, fill='*align='^'와 width=5은 키워드 매개변수입니다.
템플릿 문자열에서 이 키워드 매개변수는 출력될 일반 문자열이 아니라 실제 형식 코드로 검색되는 fill, align 및 width로 사용됩니다.
매개변수는 해당 명명된 대체자를 대체하고, 문자열 "cat"은 대응하여 형식화됩니다.
두 번째 예제에서도 마찬가지로,123.236은 위치 매개변수로 사용되며, align, width 및 precision이 형식 코드로 템플릿 문자열에 전달됩니다.
format()는 타입별 형식화 옵션을 지원합니다. 예를 들어, 날짜 시간 형식과 복수 형식.
format()는 datetime에서 __format__()를 호출하고, format()는 복수의 속성에 접근합니다.
형식화를 위해 어떤 객체의 __format__() 메서드도 쉽게 재정의할 수 있습니다.
import datetime # 날짜 시간 형식 date = datetime.datetime.now() print("현재 시간: \{:%Y/%m/%d %H:%M:%S".format(date)) # 복수 형식 complexNumber = 1+2j print("실수 부분: \{0.real} 및 상상 부분: \{0.imag}".format(complexNumber)) # __format__() 메서드를 정의 class Person: def __format__(self, format): if(format == 'age'): return '"23" return 'None' print("Adam의 나이는: \{:age}".format(Person()))
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
현재 시간: 2020/04/17 14:33:02 실수 부분: 1.0과 이상한 부분: 2.0 Adam의 나이는: 23
이곳에서,
datetime에 대해:
현재 날짜와 시간은 format() 메서드에 위치 매개변수로 전달됩니다.
또한, 내부에서 __format__() 메서드를 사용하여 format()는 연도, 월, 일, 시, 분, 초에 접근할 수 있습니다.
복수:
1 + 2j는 내부에서 ComplexNumber 객체로 변환됩니다.
그런 다음, real과 imag 속성에 접근하여 숫자가 포맷화됩니다.
__format__() 재정의
datetime와 같이, __format__() 메서드를 재정의하여 사용자 정의 포맷 설정을 할 수 있습니다. {age}로 접근할 때, 포맷은 나이를 반환합니다
객체의 __str__()와 __repr__() 기능을 사용하여 format()의 간단한 표기법을 통해 사용할 수 있습니다.
like __format__()와 같이, __str__()와 __repr__() 메서드를 쉽게 재정의할 수 있습니다.
# __str__()와 __repr__()는 !r과 !s로 간단히 표기됩니다 print("Quotes: {0!r}, Without Quotes: {0!s}".format("cat")) # __str__()와 __repr__() 클래스 구현 class Person: def __str__(self): return "STR" def __repr__(self): return "REPR" print("repr: {p!r}, str: {p!s}".format(p=Person()))
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
쌍속quotes: 'cat', 쌍속없음: cat repr: REPR, str: STR