English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Python 기본 튜토리얼

Python 프로세스 제어

Python 함수

Python 데이터 타입

Python 파일 처리

Python 객체와 클래스

Python 날짜와 시간

Python 고급 지식

Python 참조 가이드

Python 문자열 format() 사용법 및 예제

파이썬 문자열 메서드

문자열 format() 메서드는 지정된 값을 포맷화하고 문자열의 대체 문자에 삽입합니다。
대체 문자는 중괄호 {}로 정의됩니다. 대체 문자에 대한更多信息는 "대체 문자" 섹션을 참조하세요。
format() 메서드는 포맷화된 문자열을 반환합니다。

format() 메서드의 문법은 다음과 같습니다:

template.format(p0, p1, ..., k0=v0, k1=v1, ...

여기서, p0, p1,...은 위치 매개변수와 k0, k1,...가 있는 키워드 매개변수 v0, v1,....

그리고, template은 형식 코드와 매개변수 대체 문자의 복합물입니다.

string format() 매개변수

format() 메서드는 불어한 수의 매개변수를 취할 수 있습니다. 그러나 두 가지 유형의 매개변수로 나뉩니다:

  • 위치 매개변수 -대괄호 {index} 내의 매개변수 인덱스를 통해 접근할 수 있는 매개변수 목록

  • 키워드 매개변수 -키=밸류 타입의 매개변수 목록은 대괄호 {key} 내의 매개변수 키를 통해 접근할 수 있습니다

string format()가 반환하는 값

format() 메서드는 형식화된 문자열을 반환합니다.

string 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()의 기본 형식

format() 메서드는 간단한 대체 기호를 사용하여 포맷화할 수 있습니다.

예제1:기본, 위치 및 키워드 매개변수의 기본 형식

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.

주의:혼합 매개변수는 항상 위치 매개변수 뒤에 키워드 매개변수가 따라야 합니다.

format()를 사용하여 숫자를 포맷화합니다

아래에 제공된 형식 기호를 사용하여 숫자 형식을 설정할 수 있습니다:

숫자 형식 유형
타입의미
d소수 정수
c상응하는 유니코드 문자
b2진 형식
o8진 형식
x16진 형식(소문자)
X16진 형식(대문자)
n“d”와 동일합니다. 숫자 구분자의 현재 언어 환경 설정을 사용하지 않습니다.
e지수 표현법. (소문자 e)
E지수 기호(대문자 E)
f정점 기호를 표시합니다. (기본 값:6,
F“f”와 동일합니다. “inf”를 “INF”로, “nan”을 “NAN”으로 표시합니다.
g6,
G“g”와 동일합니다. 큰 숫자이면, “E”로 전환됩니다.
%배수.100으로 시작하고 %으로 끝나는 값.

예제2:간단한 숫자 형식

# 정수 매개변수
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

예제3:用int和float填充数字格式

# 最小宽度的整数
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}。

예제4:带符号数字的数字格式

# 显示+号
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

숫자 정렬 형식

将数字指定一定的宽度时,运算符<,和用于对齐。^>=

숫자 정렬 형식
타입의미
<왼쪽 정렬된 나머지 공간
^중앙 정렬된 나머지 공간
>와 나머지 공간 우측 정렬
=부호를 포함한 메우기(+)(-)좌측으로 강제

예제5:왼쪽 정렬, 오른쪽 정렬 및 중앙 정렬된 숫자 형식

# 우측 정렬된 정수
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()를 사용하여 문자열 형식화

숫자로 사용할 때, format()와 유사한 방식으로 문자열을 형식화할 수 있습니다.

예제6:메우기와 정렬을 포함한 문자 형식

# 왼쪽 정렬된 문자 메우기
print "{:5".format("cat"))
# 우측 정렬된 문자 메우기
print "{:>}}5".format("cat"))
# 중앙 정렬 문자열 채우기
print("{:^5".format("cat"))
# 중앙 정렬 문자열 채우기
#와 '*填充字符
print "{:*^5".format("cat"))

프로그램을 실행할 때, 출력은 다음과 같습니다:

cat cat cat *cat*

예제7:format()를 사용하여 문자열 자르기

# 문자열을 자르기 위해3글자
print "{:.3".format("caterpillar"))
# 문자열을 자르기 위해3글자
#와 채우기
print "{:5.3".format("caterpillar"))
# 문자열을 자르기 위해3글자
# 채우기와 중앙 정렬
print("{:^5.3".format("caterpillar"))

프로그램을 실행할 때, 출력은 다음과 같습니다:

catcat cat

class와 딕셔너리 멤버를 format()를 사용하여 포맷화

Python 내부 getattr()는 ".__age" 형식으로 클래스 멤버를 사용하며, "[index]" 형식의 딕셔너리 멤버를 찾기 위해 __getitem__()를 사용합니다.

예제8:format()를 사용하여 클래스 멤버 포맷화

# 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에 접근합니다.

예제9:format()를 사용하여 딕셔너리 멤버 포맷화

# 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))

** 는 포맷 매개변수(최소 필드 너비)입니다.

format()를 포맷 코드 매개변수로 사용

또한, 정밀도, 정렬, 채우기 문자를 위치 또는 키워드 매개변수로 동적으로 전달할 수 있습니다.

예제10:format()를 사용하여 동적 포맷화

# 동적 문자열 형식 템플릿
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()는 타입별 형식화 옵션을 지원합니다. 예를 들어, 날짜 시간 형식과 복수 형식.

format()는 datetime에서 __format__()를 호출하고, format()는 복수의 속성에 접근합니다.

형식화를 위해 어떤 객체의 __format__() 메서드도 쉽게 재정의할 수 있습니다.

예제11: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__() 메서드를 쉽게 재정의할 수 있습니다.

예제12:format()의 __str()__와 __repr()__는 각각 !r과 !s로 간단히 표기됩니다

# __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

파이썬 문자열 메서드