Chuỗi ký tự ASCII được coi là ký tự dấu chấm câu trong ngôn ngữ
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first5.
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first6chuỗi. in được
Chuỗi ký tự ASCII được coi là có thể in được. Đây là sự kết hợp của , , , và
chuỗi. khoảng trắngMột chuỗi chứa tất cả các ký tự ASCII được coi là khoảng trắng. Điều này bao gồm không gian ký tự, tab, nguồn cấp dữ liệu dòng, trả về, nguồn cấp biểu mẫu và tab dọc
Định dạng chuỗi tùy chỉnh
Lớp chuỗi dựng sẵn cung cấp khả năng thực hiện thay thế biến phức tạp và định dạng giá trị thông qua phương thức được mô tả trong PEP 3101. Lớp trong mô-đun cho phép bạn tạo và tùy chỉnh các hành vi định dạng chuỗi của riêng mình bằng cách sử dụng cách triển khai giống như phương thức tích hợp sẵn
lớp chuỗi. Trình định dạngLớp có các phương thức công khai sau
định dạng[chuỗi_định dạng , /, *args, **kwargs]Phương pháp API chính. Nó nhận một chuỗi định dạng và một tập hợp tùy ý các đối số vị trí và từ khóa. Nó chỉ là một trình bao bọc gọi
Đã thay đổi trong phiên bản 3. 7. Đối số chuỗi định dạng hiện có.
vformat[format_string , args, kwargs]Chức năng này thực hiện công việc định dạng thực tế. Nó được hiển thị dưới dạng một hàm riêng biệt cho các trường hợp bạn muốn chuyển vào một từ điển các đối số được xác định trước, thay vì giải nén và đóng gói lại từ điển dưới dạng các đối số riêng lẻ bằng cách sử dụng cú pháp
format_spec ::= [[7 vàfill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
format_spec ::= [[8. thực hiện công việc chia nhỏ chuỗi định dạng thành dữ liệu ký tự và các trường thay thế. Nó gọi các phương thức khác nhau được mô tả bên dướifill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
Ngoài ra, định nghĩa một số phương thức được dự định thay thế bởi các lớp con
phân tích cú pháp[format_string]Lặp lại format_string và trả về một bộ lặp có thể lặp lại [literal_text, field_name, format_spec, chuyển đổi]. Điều này được sử dụng để ngắt chuỗi thành văn bản bằng chữ hoặc trường thay thế
Các giá trị trong bộ dữ liệu biểu thị một cách khái niệm một khoảng văn bản theo sau là một trường thay thế duy nhất. Nếu không có văn bản bằng chữ [điều này có thể xảy ra nếu hai trường thay thế xảy ra liên tiếp], thì văn bản bằng chữ sẽ là một chuỗi có độ dài bằng không. Nếu không có trường thay thế thì giá trị của field_name, format_spec và chuyển đổi sẽ là
>>> '{0}, {1}, {2}'.format['a', 'b', 'c'] 'a, b, c' >>> '{}, {}, {}'.format['a', 'b', 'c'] # 3.1+ only 'a, b, c' >>> '{2}, {1}, {0}'.format['a', 'b', 'c'] 'c, b, a' >>> '{2}, {1}, {0}'.format[*'abc'] # unpacking argument sequence 'c, b, a' >>> '{0}{1}{0}'.format['abra', 'cad'] # arguments' indices can be repeated 'abracadabra'2get_field[field_name , args, kwargs]
Đã cho field_name như được trả về bởi [xem ở trên], chuyển đổi nó thành một đối tượng được định dạng. Trả về một bộ [obj, used_key]. Phiên bản mặc định lấy các chuỗi có dạng được xác định trong PEP 3101, chẳng hạn như “0[tên]” hoặc “nhãn. Tiêu đề". args và kwargs như được truyền vào. Giá trị trả về used_key có cùng ý nghĩa với tham số chính để
get_value[key , args, kwargs]Truy xuất một giá trị trường đã cho. Đối số chính sẽ là một số nguyên hoặc một chuỗi. Nếu nó là một số nguyên, nó đại diện cho chỉ mục của đối số vị trí trong args;
Tham số args được đặt thành danh sách các đối số vị trí thành và tham số kwargs được đặt thành từ điển của các đối số từ khóa
Đối với tên trường ghép, các hàm này chỉ được gọi cho thành phần đầu tiên của tên trường;
Vì vậy, ví dụ, biểu thức trường '0. name' sẽ được gọi với đối số chính là 0. Thuộc tính
>>> '{0}, {1}, {2}'.format['a', 'b', 'c'] 'a, b, c' >>> '{}, {}, {}'.format['a', 'b', 'c'] # 3.1+ only 'a, b, c' >>> '{2}, {1}, {0}'.format['a', 'b', 'c'] 'c, b, a' >>> '{2}, {1}, {0}'.format[*'abc'] # unpacking argument sequence 'c, b, a' >>> '{0}{1}{0}'.format['abra', 'cad'] # arguments' indices can be repeated 'abracadabra'8 sẽ được tra cứu sau khi trả về bằng cách gọi hàm tích hợp
Nếu chỉ mục hoặc từ khóa đề cập đến một mục không tồn tại, thì nên tăng hoặc
check_unused_args[used_args , args, kwargs]Thực hiện kiểm tra các đối số không sử dụng nếu muốn. Đối số của hàm này là tập hợp tất cả các khóa đối số thực sự được tham chiếu trong chuỗi định dạng [số nguyên cho đối số vị trí và chuỗi cho đối số được đặt tên] và tham chiếu đến đối số và kwargs đã được chuyển đến vformat. Tập hợp các đối số không sử dụng có thể được tính từ các tham số này. được cho là đưa ra một ngoại lệ nếu kiểm tra không thành công
format_field[giá trị , format_spec]chỉ cần gọi tích hợp toàn cầu. Phương thức được cung cấp để các lớp con có thể ghi đè lên nó
convert_field[giá trị , chuyển đổi]Chuyển đổi giá trị [được trả về bởi ] cho một loại chuyển đổi [như trong bộ dữ liệu được trả về bởi phương thức]. Phiên bản mặc định hiểu các loại chuyển đổi 's' [str], 'r' [repr] và 'a' [ascii]
Cú pháp chuỗi định dạng
Phương thức và lớp chia sẻ cùng một cú pháp cho các chuỗi định dạng [mặc dù trong trường hợp của , các lớp con có thể xác định cú pháp chuỗi định dạng của riêng chúng]. Cú pháp có liên quan đến cú pháp của , nhưng nó kém phức tạp hơn và đặc biệt là không hỗ trợ các biểu thức tùy ý
Chuỗi định dạng chứa “trường thay thế” được bao quanh bởi dấu ngoặc nhọn
>>> c = 3-5j >>> ['The complex number {0} is formed from the real part {0.real} ' .. 'and the imaginary part {0.imag}.'].format[c] 'The complex number [3-5j] is formed from the real part 3.0 and the imaginary part -5.0.' >>> class Point: .. def __init__[self, x, y]: .. self.x, self.y = x, y .. def __str__[self]: .. return 'Point[{self.x}, {self.y}]'.format[self=self] ... >>> str[Point[4, 2]] 'Point[4, 2]'1. Bất cứ thứ gì không có trong dấu ngoặc nhọn được coi là văn bản theo nghĩa đen, được sao chép không thay đổi vào đầu ra. Nếu bạn cần bao gồm một ký tự ngoặc nhọn trong văn bản chữ, nó có thể được thoát ra bằng cách nhân đôi.
>>> c = 3-5j >>> ['The complex number {0} is formed from the real part {0.real} ' .. 'and the imaginary part {0.imag}.'].format[c] 'The complex number [3-5j] is formed from the real part 3.0 and the imaginary part -5.0.' >>> class Point: .. def __init__[self, x, y]: .. self.x, self.y = x, y .. def __str__[self]: .. return 'Point[{self.x}, {self.y}]'.format[self=self] ... >>> str[Point[4, 2]] 'Point[4, 2]'2 và
>>> c = 3-5j >>> ['The complex number {0} is formed from the real part {0.real} ' .. 'and the imaginary part {0.imag}.'].format[c] 'The complex number [3-5j] is formed from the real part 3.0 and the imaginary part -5.0.' >>> class Point: .. def __init__[self, x, y]: .. self.x, self.y = x, y .. def __str__[self]: .. return 'Point[{self.x}, {self.y}]'.format[self=self] ... >>> str[Point[4, 2]] 'Point[4, 2]'3
Ngữ pháp cho trường thay thế như sau
replacement_field ::= "{" [field_name
] ["!"conversion
] [":"format_spec
] "}" field_name ::= arg_name ["."attribute_name
| "["element_index
"]"]* arg_name ::= [identifier
|digit
+] attribute_name ::=identifier
element_index ::=digit
+ |index_string
index_string ::= + conversion ::= "r" | "s" | "a" format_spec ::=
Nói một cách ít trang trọng hơn, trường thay thế có thể bắt đầu bằng tên_trường chỉ định đối tượng có giá trị sẽ được định dạng và chèn vào đầu ra thay vì trường thay thế. Trường_tên tùy chọn được theo sau bởi trường chuyển đổi, đứng trước dấu chấm than
>>> c = 3-5j >>> ['The complex number {0} is formed from the real part {0.real} ' .. 'and the imaginary part {0.imag}.'].format[c] 'The complex number [3-5j] is formed from the real part 3.0 and the imaginary part -5.0.' >>> class Point: .. def __init__[self, x, y]: .. self.x, self.y = x, y .. def __str__[self]: .. return 'Point[{self.x}, {self.y}]'.format[self=self] ... >>> str[Point[4, 2]] 'Point[4, 2]'4 và định dạng_spec, đứng trước dấu hai chấm
>>> c = 3-5j >>> ['The complex number {0} is formed from the real part {0.real} ' .. 'and the imaginary part {0.imag}.'].format[c] 'The complex number [3-5j] is formed from the real part 3.0 and the imaginary part -5.0.' >>> class Point: .. def __init__[self, x, y]: .. self.x, self.y = x, y .. def __str__[self]: .. return 'Point[{self.x}, {self.y}]'.format[self=self] ... >>> str[Point[4, 2]] 'Point[4, 2]'5. Chúng chỉ định định dạng không mặc định cho giá trị thay thế
Xem thêm phần
Bản thân field_name bắt đầu bằng arg_name là một số hoặc một từ khóa. Nếu đó là một số, nó đề cập đến một đối số vị trí và nếu đó là một từ khóa, thì nó đề cập đến một đối số từ khóa được đặt tên. Nếu arg_names số trong một chuỗi định dạng là 0, 1, 2, … theo thứ tự, tất cả chúng có thể được bỏ qua [không chỉ một số] và các số 0, 1, 2, … sẽ tự động được chèn vào theo thứ tự đó. Vì arg_name không được phân tách bằng dấu ngoặc kép nên không thể chỉ định các khóa từ điển tùy ý [e. g. , các chuỗi
>>> c = 3-5j >>> ['The complex number {0} is formed from the real part {0.real} ' .. 'and the imaginary part {0.imag}.'].format[c] 'The complex number [3-5j] is formed from the real part 3.0 and the imaginary part -5.0.' >>> class Point: .. def __init__[self, x, y]: .. self.x, self.y = x, y .. def __str__[self]: .. return 'Point[{self.x}, {self.y}]'.format[self=self] ... >>> str[Point[4, 2]] 'Point[4, 2]'6 hoặc
>>> c = 3-5j >>> ['The complex number {0} is formed from the real part {0.real} ' .. 'and the imaginary part {0.imag}.'].format[c] 'The complex number [3-5j] is formed from the real part 3.0 and the imaginary part -5.0.' >>> class Point: .. def __init__[self, x, y]: .. self.x, self.y = x, y .. def __str__[self]: .. return 'Point[{self.x}, {self.y}]'.format[self=self] ... >>> str[Point[4, 2]] 'Point[4, 2]'7] trong một chuỗi định dạng. Arg_name có thể được theo sau bởi bất kỳ số lượng biểu thức thuộc tính hoặc chỉ mục nào. Biểu thức có dạng
>>> c = 3-5j >>> ['The complex number {0} is formed from the real part {0.real} ' .. 'and the imaginary part {0.imag}.'].format[c] 'The complex number [3-5j] is formed from the real part 3.0 and the imaginary part -5.0.' >>> class Point: .. def __init__[self, x, y]: .. self.x, self.y = x, y .. def __str__[self]: .. return 'Point[{self.x}, {self.y}]'.format[self=self] ... >>> str[Point[4, 2]] 'Point[4, 2]'8 chọn thuộc tính có tên bằng cách sử dụng , trong khi biểu thức có dạng
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first50 thực hiện tra cứu chỉ mục bằng cách sử dụng
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first51
Đã thay đổi trong phiên bản 3. 1. Có thể bỏ qua các chỉ định đối số vị trí cho , do đó,
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first53 tương đương với
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first54.
Đã thay đổi trong phiên bản 3. 4. Có thể bỏ qua các chỉ định đối số vị trí cho.
Một số ví dụ chuỗi định dạng đơn giản
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first9
Trường chuyển đổi gây ra sự ép buộc kiểu trước khi định dạng. Thông thường, công việc định dạng một giá trị được thực hiện bằng phương thức
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first56 của chính giá trị đó. Tuy nhiên, trong một số trường hợp, nên buộc một loại được định dạng dưới dạng một chuỗi, ghi đè định nghĩa định dạng của chính nó. Bằng cách chuyển đổi giá trị thành chuỗi trước khi gọi
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first56, logic định dạng thông thường được bỏ qua
Ba cờ chuyển đổi hiện được hỗ trợ.
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first58 gọi giá trị,
format_spec ::= [[30 gọi vàfill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
format_spec ::= [[32 gọifill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
Vài ví dụ
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first
Trường format_spec chứa thông số kỹ thuật về cách trình bày giá trị, bao gồm các chi tiết như độ rộng trường, căn chỉnh, phần đệm, độ chính xác thập phân, v.v. Mỗi loại giá trị có thể xác định “ngôn ngữ nhỏ định dạng” của riêng mình hoặc diễn giải định dạng_spec
Hầu hết các loại tích hợp đều hỗ trợ một ngôn ngữ nhỏ định dạng phổ biến, được mô tả trong phần tiếp theo
Trường format_spec cũng có thể bao gồm các trường thay thế lồng nhau bên trong nó. Các trường thay thế lồng nhau này có thể chứa tên trường, cờ chuyển đổi và đặc tả định dạng nhưng không được phép lồng sâu hơn. Các trường thay thế trong format_spec được thay thế trước khi chuỗi format_spec được diễn giải. Điều này cho phép định dạng của một giá trị được chỉ định động
Xem phần cho một số ví dụ
Đặc tả định dạng Ngôn ngữ nhỏ
“Thông số kỹ thuật định dạng” được sử dụng trong các trường thay thế có trong chuỗi định dạng để xác định cách trình bày các giá trị riêng lẻ [xem và ]. Chúng cũng có thể được chuyển trực tiếp đến hàm tích hợp. Mỗi loại có thể định dạng có thể xác định cách diễn giải đặc tả định dạng
Hầu hết các loại tích hợp đều triển khai các tùy chọn sau cho thông số kỹ thuật định dạng, mặc dù một số tùy chọn định dạng chỉ được hỗ trợ bởi các loại số
Một quy ước chung là một đặc tả định dạng trống tạo ra kết quả giống như khi bạn gọi giá trị. Đặc tả định dạng không trống thường sửa đổi kết quả
Hình thức chung của một công cụ xác định định dạng tiêu chuẩn là
format_spec ::= [[fill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
Nếu một giá trị căn chỉnh hợp lệ được chỉ định, nó có thể được bắt đầu bằng một ký tự điền có thể là bất kỳ ký tự nào và mặc định là khoảng trắng nếu bị bỏ qua. Không thể sử dụng dấu ngoặc nhọn theo nghĩa đen [”
format_spec ::= [[36” hoặc “fill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
format_spec ::= [[37”] làm ký tự điền vào a hoặc khi sử dụng phương thức. Tuy nhiên, có thể chèn dấu ngoặc nhọn với trường thay thế lồng nhau. Hạn chế này không ảnh hưởng đến chức năngfill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
Ý nghĩa của các tùy chọn căn chỉnh khác nhau như sau
Tùy chọn
Nghĩa
format_spec ::= [[90fill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"Buộc trường phải được căn trái trong không gian có sẵn [đây là mặc định cho hầu hết các đối tượng]
format_spec ::= [[91fill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"Buộc trường phải được căn phải trong khoảng trống có sẵn [đây là giá trị mặc định cho các số]
format_spec ::= [[92fill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"Buộc đặt phần đệm sau dấu [nếu có] nhưng trước các chữ số. Điều này được sử dụng để in các trường ở dạng '+000000120'. Tùy chọn căn chỉnh này chỉ hợp lệ cho các loại số. Nó trở thành mặc định cho các số khi '0' ngay trước độ rộng trường
format_spec ::= [[93fill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"Buộc trường được căn giữa trong không gian có sẵn
Lưu ý rằng trừ khi độ rộng trường tối thiểu được xác định, chiều rộng trường sẽ luôn có cùng kích thước với dữ liệu để điền vào, do đó, tùy chọn căn chỉnh không có ý nghĩa gì trong trường hợp này
Tùy chọn ký hiệu chỉ hợp lệ đối với các loại số và có thể là một trong các tùy chọn sau
Tùy chọn
Nghĩa
format_spec ::= [[94fill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"chỉ ra rằng một dấu hiệu nên được sử dụng cho cả số dương cũng như số âm
format_spec ::= [[95fill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"chỉ ra rằng một dấu hiệu chỉ nên được sử dụng cho các số âm [đây là hành vi mặc định]
khoảng trống
chỉ ra rằng nên sử dụng khoảng trắng ở đầu trên các số dương và dấu trừ trên các số âm
Tùy chọn
format_spec ::= [[96 ép buộc các giá trị dấu phẩy động 0 âm thành 0 dương sau khi làm tròn đến độ chính xác của định dạng. Tùy chọn này chỉ hợp lệ cho các kiểu trình bày dấu phẩy độngfill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
Đã thay đổi trong phiên bản 3. 11. Đã thêm tùy chọn
format_spec ::= [[96 [xem thêm PEP 682].fill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
Tùy chọn
format_spec ::= [[98 khiến “dạng thay thế” được sử dụng để chuyển đổi. Hình thức thay thế được xác định khác nhau cho các loại khác nhau. Tùy chọn này chỉ hợp lệ cho các loại số nguyên, float và phức tạp. Đối với số nguyên, khi đầu ra nhị phân, bát phân hoặc thập lục phân được sử dụng, tùy chọn này sẽ thêm tiền tố tương ứngfill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
format_spec ::= [[99,fill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first900,
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first901 hoặc
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first902 vào giá trị đầu ra. Đối với float và phức, dạng thay thế khiến kết quả chuyển đổi luôn chứa ký tự dấu thập phân, ngay cả khi không có chữ số nào theo sau nó. Thông thường, một ký tự dấu thập phân chỉ xuất hiện trong kết quả của những chuyển đổi này nếu một chữ số theo sau nó. Ngoài ra, đối với chuyển đổi
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first903 và
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first904, các số 0 ở cuối không bị xóa khỏi kết quả
Tùy chọn
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first905 báo hiệu việc sử dụng dấu phẩy cho dấu phân cách hàng nghìn. Đối với dấu tách nhận biết ngôn ngữ, thay vào đó hãy sử dụng kiểu trình bày số nguyên
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first906
Đã thay đổi trong phiên bản 3. 1. Đã thêm tùy chọn
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first905 [xem thêm PEP 378].
Tùy chọn
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first908 báo hiệu việc sử dụng dấu gạch dưới cho dấu phân cách hàng nghìn đối với kiểu trình bày dấu chấm động và kiểu trình bày số nguyên
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first909. Đối với các kiểu trình bày số nguyên
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first910,
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first911,
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first912 và
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first913, dấu gạch dưới sẽ được chèn sau mỗi 4 chữ số. Đối với các loại bản trình bày khác, việc chỉ định tùy chọn này là một lỗi
Đã thay đổi trong phiên bản 3. 6. Đã thêm tùy chọn
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first908 [xem thêm PEP 515].
chiều rộng là một số nguyên thập phân xác định tổng chiều rộng trường tối thiểu, bao gồm mọi tiền tố, dấu phân cách và các ký tự định dạng khác. Nếu không được chỉ định, thì độ rộng trường sẽ được xác định bởi nội dung
Khi không căn chỉnh rõ ràng, đặt trước trường chiều rộng một ký tự số 0 [
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first915] sẽ bật tính năng đệm số 0 nhận biết dấu hiệu cho các loại số. Điều này tương đương với ký tự điền là
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first915 với kiểu căn chỉnh là
format_spec ::= [[92fill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
Đã thay đổi trong phiên bản 3. 10. Đặt trước trường chiều rộng bằng
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first915 không còn ảnh hưởng đến căn chỉnh mặc định cho chuỗi.
Độ chính xác là một số nguyên thập phân cho biết có bao nhiêu chữ số sẽ được hiển thị sau dấu thập phân đối với kiểu trình bày
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first919 và
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first920 hoặc trước và sau dấu thập phân đối với kiểu trình bày
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first903 hoặc
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first904. Đối với các kiểu trình bày chuỗi, trường cho biết kích thước trường tối đa - nói cách khác, có bao nhiêu ký tự sẽ được sử dụng từ nội dung trường. Độ chính xác không được phép đối với các kiểu trình bày số nguyên
Cuối cùng, loại xác định cách trình bày dữ liệu
Các kiểu trình bày chuỗi có sẵn là
Loại
Nghĩa
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first923định dạng chuỗi. Đây là kiểu mặc định cho chuỗi và có thể bỏ qua
Không có
Giống như
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first923
Các kiểu trình bày số nguyên có sẵn là
Loại
Nghĩa
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first910định dạng nhị phân. Xuất số trong cơ số 2
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first926Nhân vật. Chuyển đổi số nguyên thành ký tự unicode tương ứng trước khi in
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first909số nguyên thập phân. Xuất ra số trong cơ số 10
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first911định dạng bát phân. Xuất ra số trong cơ số 8
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first912định dạng hex. Xuất số trong cơ số 16, sử dụng chữ cái viết thường cho các chữ số trên 9
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first913định dạng hex. Xuất số trong cơ số 16, sử dụng chữ in hoa cho các chữ số trên 9. Trong trường hợp
format_spec ::= [[98 được chỉ định, tiền tốfill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%""Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first901 cũng sẽ được viết hoa thành"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first902"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first906Con số. Điều này giống như
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first909, ngoại trừ việc nó sử dụng cài đặt ngôn ngữ hiện tại để chèn các ký tự phân tách số thích hợpKhông có
Giống như
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first909
Ngoài các kiểu trình bày ở trên, các số nguyên có thể được định dạng bằng các kiểu trình bày dấu phẩy động được liệt kê bên dưới [ngoại trừ
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first906 và
>>> '{0}, {1}, {2}'.format['a', 'b', 'c'] 'a, b, c' >>> '{}, {}, {}'.format['a', 'b', 'c'] # 3.1+ only 'a, b, c' >>> '{2}, {1}, {0}'.format['a', 'b', 'c'] 'c, b, a' >>> '{2}, {1}, {0}'.format[*'abc'] # unpacking argument sequence 'c, b, a' >>> '{0}{1}{0}'.format['abra', 'cad'] # arguments' indices can be repeated 'abracadabra'2]. Khi làm như vậy, được sử dụng để chuyển đổi số nguyên thành số dấu phẩy động trước khi định dạng
Các loại bản trình bày có sẵn cho và các giá trị là
Loại
Nghĩa
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first942Ký hiệu khoa học. Đối với một độ chính xác nhất định
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first943, định dạng số theo ký hiệu khoa học bằng chữ 'e' ngăn cách hệ số với số mũ. Hệ số có một chữ số trước và ________ 1943 chữ số sau dấu thập phân, tổng cộng là ________ 1945 chữ số có nghĩa. Không đưa ra độ chính xác, sử dụng độ chính xác của"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first946 chữ số sau dấu thập phân cho , và hiển thị tất cả các chữ số hệ số cho. Nếu không có chữ số nào theo sau dấu thập phân, thì dấu thập phân cũng bị xóa trừ khi tùy chọn"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first949 được sử dụng"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first950Ký hiệu khoa học. Giống như
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first942 ngoại trừ nó sử dụng chữ hoa 'E' làm ký tự phân cách"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first919Ký hiệu điểm cố định. Đối với một độ chính xác nhất định _______ 1943, định dạng số dưới dạng số thập phân có chính xác _______ 1943 chữ số sau dấu thập phân. Không cung cấp độ chính xác, sử dụng độ chính xác của
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first946 chữ số sau dấu thập phân cho , và sử dụng độ chính xác đủ lớn để hiển thị tất cả các chữ số hệ số cho. Nếu không có chữ số nào theo sau dấu thập phân, thì dấu thập phân cũng bị xóa trừ khi tùy chọn"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first949 được sử dụng"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first920Ký hiệu điểm cố định. Tương tự như
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first919, nhưng chuyển đổi ________ 1961 thành ________ 1962 và ________ 1963 thành ________ 1964"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first903định dạng chung. Đối với một độ chính xác nhất định
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first966, điều này làm tròn số thành"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first943 chữ số có nghĩa và sau đó định dạng kết quả ở định dạng điểm cố định hoặc ký hiệu khoa học, tùy thuộc vào độ lớn của nó. Độ chính xác của"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first968 được coi là tương đương với độ chính xác của"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first969Các quy tắc chính xác như sau. giả sử rằng kết quả được định dạng với kiểu trình bày
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first942 và độ chính xác"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first971 sẽ có số mũ"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first972. Sau đó, nếu"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first973, trong đó"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first974 là -4 cho số float và -6 cho , thì số được định dạng với kiểu trình bày"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first919 và độ chính xác"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first977. Mặt khác, số được định dạng với kiểu trình bày"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first942 và độ chính xác"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first971. Trong cả hai trường hợp, các số không ở cuối không đáng kể sẽ bị xóa khỏi ý nghĩa và dấu thập phân cũng bị xóa nếu không còn chữ số nào theo sau nó, trừ khi tùy chọnformat_spec ::= [[98 được sử dụngfill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"Không có độ chính xác nhất định, sử dụng độ chính xác của
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first946 chữ số có nghĩa cho. Đối với , hệ số của kết quả được hình thành từ các chữ số hệ số của giá trị;Vô cực dương và âm, 0 dương và âm, và nans, được định dạng lần lượt là
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first963,"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first986,"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first968,"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first988 và"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first961, bất kể độ chính xác là bao nhiêu"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first904định dạng chung. Tương tự như
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first903 ngoại trừ chuyển sang"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first950 nếu số quá lớn. Các biểu diễn của vô cực và NaN cũng được viết hoa"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first906Con số. Điều này giống như
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first903, ngoại trừ việc nó sử dụng cài đặt ngôn ngữ hiện tại để chèn các ký tự phân tách số thích hợp"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first995tỷ lệ phần trăm. Nhân một số với 100 và hiển thị ở định dạng cố định [______1919], theo sau là dấu phần trăm
Không có
Đối với điều này giống như
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first903, ngoại trừ khi ký hiệu điểm cố định được sử dụng để định dạng kết quả, nó luôn bao gồm ít nhất một chữ số sau dấu thập phân. Độ chính xác được sử dụng càng lớn càng tốt để biểu thị giá trị đã cho một cách trung thựcĐối với , điều này cũng giống như
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first903 hoặc"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first904 tùy thuộc vào giá trị của"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first02 cho ngữ cảnh thập phân hiện tạiHiệu quả tổng thể là để khớp với đầu ra khi được thay đổi bởi các công cụ sửa đổi định dạng khác
định dạng ví dụ
Phần này chứa các ví dụ về cú pháp và so sánh với định dạng
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first05 cũ
Trong hầu hết các trường hợp, cú pháp tương tự như định dạng
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first05 cũ, với việc bổ sung
>>> c = 3-5j >>> ['The complex number {0} is formed from the real part {0.real} ' .. 'and the imaginary part {0.imag}.'].format[c] 'The complex number [3-5j] is formed from the real part 3.0 and the imaginary part -5.0.' >>> class Point: .. def __init__[self, x, y]: .. self.x, self.y = x, y .. def __str__[self]: .. return 'Point[{self.x}, {self.y}]'.format[self=self] ... >>> str[Point[4, 2]] 'Point[4, 2]'1 và với
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first08 được sử dụng thay vì
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first05. Ví dụ,
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first10 có thể được dịch sang
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first11
Cú pháp định dạng mới cũng hỗ trợ các tùy chọn mới và khác nhau, được hiển thị trong các ví dụ sau
Truy cập đối số theo vị trí
>>> '{0}, {1}, {2}'.format['a', 'b', 'c'] 'a, b, c' >>> '{}, {}, {}'.format['a', 'b', 'c'] # 3.1+ only 'a, b, c' >>> '{2}, {1}, {0}'.format['a', 'b', 'c'] 'c, b, a' >>> '{2}, {1}, {0}'.format[*'abc'] # unpacking argument sequence 'c, b, a' >>> '{0}{1}{0}'.format['abra', 'cad'] # arguments' indices can be repeated 'abracadabra'
Truy cập đối số theo tên
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first38
Truy cập các thuộc tính của đối số
>>> c = 3-5j >>> ['The complex number {0} is formed from the real part {0.real} ' .. 'and the imaginary part {0.imag}.'].format[c] 'The complex number [3-5j] is formed from the real part 3.0 and the imaginary part -5.0.' >>> class Point: .. def __init__[self, x, y]: .. self.x, self.y = x, y .. def __str__[self]: .. return 'Point[{self.x}, {self.y}]'.format[self=self] ... >>> str[Point[4, 2]] 'Point[4, 2]'
Truy cập các mục của đối số
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first5
Thay thế
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first12 và
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first13
format_spec ::= [[3fill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
Căn chỉnh văn bản và chỉ định chiều rộng
format_spec ::= [[9fill
]align
][sign
][z][#][0][width
][grouping_option
][.precision
][type
] fill ::= align ::= "" | "=" | "^" sign ::= "+" | "-" | " " width ::=digit
+ grouping_option ::= "_" | "," precision ::=digit
+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
Thay thế
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first14,
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first15, và
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first16 và ghi rõ dấu hiệu
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first90
Thay thế
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first17 và
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first18 và chuyển đổi giá trị sang các cơ sở khác nhau
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first91
Sử dụng dấu phẩy làm dấu tách hàng nghìn
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first92
Thể hiện một tỷ lệ phần trăm
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first93
Sử dụng định dạng dành riêng cho loại
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first94
Các đối số lồng nhau và các ví dụ phức tạp hơn
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first95
Chuỗi mẫu
Các chuỗi mẫu cung cấp các thay thế chuỗi đơn giản hơn như được mô tả trong PEP 292. Trường hợp sử dụng chính cho chuỗi mẫu là để quốc tế hóa [i18n] vì trong ngữ cảnh đó, cú pháp và chức năng đơn giản hơn giúp dịch dễ dàng hơn các phương tiện định dạng chuỗi tích hợp sẵn khác trong Python. Để làm ví dụ về thư viện được xây dựng trên các chuỗi mẫu cho i18n, hãy xem lưu lượng. gói i18n
Chuỗi mẫu hỗ trợ thay thế dựa trên
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first19, sử dụng các quy tắc sau
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first
20 là một lối thoát;"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first
22 đặt tên cho trình giữ chỗ thay thế khớp với khóa ánh xạ của"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first
23. Theo mặc định,"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first
23 bị hạn chế đối với mọi chuỗi ký tự chữ và số ASCII phân biệt chữ hoa chữ thường [bao gồm cả dấu gạch dưới] bắt đầu bằng dấu gạch dưới hoặc ký tự ASCII. Ký tự không định danh đầu tiên sau ký tự"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first
19 chấm dứt thông số kỹ thuật giữ chỗ này"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first
26 tương đương với"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first
22. Nó được yêu cầu khi các ký tự định danh hợp lệ đi theo trình giữ chỗ nhưng không phải là một phần của trình giữ chỗ, chẳng hạn như"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first
28
Bất kỳ sự xuất hiện nào khác của
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first19 trong chuỗi sẽ dẫn đến việc tăng
Mô-đun cung cấp một lớp thực hiện các quy tắc này. Các phương pháp là
lớp chuỗi. Mẫu[mẫu]Hàm tạo nhận một đối số duy nhất là chuỗi mẫu
thay thế[ánh xạ={}, /, **kwds]Thực hiện thay thế mẫu, trả về một chuỗi mới. ánh xạ là bất kỳ đối tượng giống như từ điển nào có khóa khớp với phần giữ chỗ trong mẫu. Ngoài ra, bạn có thể cung cấp các đối số từ khóa, trong đó các từ khóa là phần giữ chỗ. Khi cả ánh xạ và kwds được cung cấp và có các bản sao, trình giữ chỗ từ kwds được ưu tiên
safe_substitute[ánh xạ={}, /, **kwds]Giống như , ngoại trừ nếu trình giữ chỗ bị thiếu trong ánh xạ và kwds, thay vì đưa ra một ngoại lệ, trình giữ chỗ ban đầu sẽ xuất hiện nguyên vẹn trong chuỗi kết quả. Ngoài ra, không giống như với , bất kỳ lần xuất hiện nào khác của
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first19 sẽ chỉ trả về
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first19 thay vì tăng
Mặc dù các ngoại lệ khác vẫn có thể xảy ra, nhưng phương thức này được gọi là “an toàn” vì nó luôn cố gắng trả về một chuỗi có thể sử dụng được thay vì đưa ra một ngoại lệ. Theo một nghĩa khác, có thể là bất kỳ thứ gì khác ngoài an toàn, vì nó sẽ âm thầm bỏ qua các mẫu không đúng định dạng có chứa dấu phân cách lơ lửng, dấu ngoặc nhọn chưa khớp hoặc trình giữ chỗ không phải là mã định danh Python hợp lệ
is_valid[]Trả về false nếu mẫu có phần giữ chỗ không hợp lệ sẽ khiến tăng
Mới trong phiên bản 3. 11
get_identifiers[]Trả về danh sách các số nhận dạng hợp lệ trong mẫu, theo thứ tự chúng xuất hiện lần đầu, bỏ qua mọi số nhận dạng không hợp lệ
Mới trong phiên bản 3. 11
các phiên bản cũng cung cấp một thuộc tính dữ liệu công khai
mẫuĐây là đối tượng được truyền cho đối số mẫu của hàm tạo. Nói chung, bạn không nên thay đổi nó, nhưng quyền truy cập chỉ đọc không được thực thi
Dưới đây là một ví dụ về cách sử dụng Mẫu
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first96
Sử dụng nâng cao. bạn có thể lấy các lớp con của để tùy chỉnh cú pháp trình giữ chỗ, ký tự phân cách hoặc toàn bộ biểu thức chính quy được sử dụng để phân tích các chuỗi mẫu. Để làm điều này, bạn có thể ghi đè các thuộc tính lớp này
dấu phân cách - Đây là chuỗi ký tự mô tả một trình giữ chỗ giới thiệu dấu phân cách. Giá trị mặc định là
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first
19. Lưu ý rằng đây không phải là một biểu thức chính quy, vì việc triển khai sẽ gọi chuỗi này khi cần. Lưu ý thêm rằng bạn không thể thay đổi dấu phân cách sau khi tạo lớp [i. e. một dấu phân cách khác phải được đặt trong không gian tên lớp của lớp con]idpattern – Đây là biểu thức chính quy mô tả mẫu dành cho trình giữ chỗ không có dấu ngoặc. Giá trị mặc định là biểu thức chính quy
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first
47. Nếu điều này được đưa ra và niềng răng là>>> '{0}, {1}, {2}'.format['a', 'b', 'c'] 'a, b, c' >>> '{}, {}, {}'.format['a', 'b', 'c'] # 3.1+ only 'a, b, c' >>> '{2}, {1}, {0}'.format['a', 'b', 'c'] 'c, b, a' >>> '{2}, {1}, {0}'.format[*'abc'] # unpacking argument sequence 'c, b, a' >>> '{0}{1}{0}'.format['abra', 'cad'] # arguments' indices can be repeated 'abracadabra'
2 thì mẫu này cũng sẽ áp dụng cho các trình giữ chỗ có niềng răngGhi chú
Vì các cờ mặc định là
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first
49, nên mẫu"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first
50 có thể khớp với một số ký tự không phải ASCII. Đó là lý do tại sao chúng tôi sử dụng cờ địa phương"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first
51 ở đâyĐã thay đổi trong phiên bản 3. 7. mẫu niềng răng có thể được sử dụng để xác định các mẫu riêng biệt được sử dụng bên trong và bên ngoài dấu ngoặc nhọn.
cú đúp - Điều này giống như idpattern nhưng mô tả mẫu cho các trình giữ chỗ có dấu ngoặc nhọn. Mặc định là
>>> '{0}, {1}, {2}'.format['a', 'b', 'c'] 'a, b, c' >>> '{}, {}, {}'.format['a', 'b', 'c'] # 3.1+ only 'a, b, c' >>> '{2}, {1}, {0}'.format['a', 'b', 'c'] 'c, b, a' >>> '{2}, {1}, {0}'.format[*'abc'] # unpacking argument sequence 'c, b, a' >>> '{0}{1}{0}'.format['abra', 'cad'] # arguments' indices can be repeated 'abracadabra'
2 có nghĩa là quay trở lại idpattern [i. e. cùng một mẫu được sử dụng cả bên trong và bên ngoài dấu ngoặc nhọn]. Nếu được cung cấp, điều này cho phép bạn xác định các mẫu khác nhau cho các trình giữ chỗ có thanh giằng và không có thanh giằngMới trong phiên bản 3. 7
cờ - Các cờ biểu thức chính quy sẽ được áp dụng khi biên dịch biểu thức chính quy được sử dụng để nhận dạng thay thế. Giá trị mặc định là
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first
49. Lưu ý rằng"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first
54 sẽ luôn được thêm vào các cờ, do đó, các mẫu id tùy chỉnh phải tuân theo các quy ước cho các biểu thức chính quy dài dòngMới trong phiên bản 3. 2
Ngoài ra, bạn có thể cung cấp toàn bộ mẫu biểu thức chính quy bằng cách ghi đè mẫu thuộc tính lớp. Nếu bạn làm điều này, giá trị phải là một đối tượng biểu thức chính quy với bốn nhóm chụp được đặt tên. Các nhóm chụp tương ứng với các quy tắc được đưa ra ở trên, cùng với quy tắc giữ chỗ không hợp lệ
đã thoát - Nhóm này khớp với chuỗi thoát, e. g.
"Harold's a clever {0!s}" # Calls str[] on the argument first "Bring out the holy {name!r}" # Calls repr[] on the argument first "More {!a}" # Calls ascii[] on the argument first
20, theo mẫu mặc địnhcó tên – Nhóm này khớp với tên giữ chỗ không có dấu ngoặc;
niềng răng - Nhóm này khớp với tên giữ chỗ kèm theo dấu ngoặc nhọn;
không hợp lệ - Nhóm này khớp với bất kỳ mẫu dấu phân cách nào khác [thường là một dấu phân cách duy nhất] và nó sẽ xuất hiện cuối cùng trong biểu thức chính quy
Các phương thức trên lớp này sẽ tăng nếu mẫu khớp với mẫu mà không có một trong các nhóm được đặt tên này khớp
chức năng trợ giúp
chuỗi. capwords[s , sep=None]Tách đối số thành các từ bằng cách sử dụng , viết hoa từng từ bằng cách sử dụng và nối các từ viết hoa bằng cách sử dụng. Nếu đối số thứ hai tùy chọn sep không có hoặc
>>> '{0}, {1}, {2}'.format['a', 'b', 'c'] 'a, b, c' >>> '{}, {}, {}'.format['a', 'b', 'c'] # 3.1+ only 'a, b, c' >>> '{2}, {1}, {0}'.format['a', 'b', 'c'] 'c, b, a' >>> '{2}, {1}, {0}'.format[*'abc'] # unpacking argument sequence 'c, b, a' >>> '{0}{1}{0}'.format['abra', 'cad'] # arguments' indices can be repeated 'abracadabra'2, các ký tự khoảng trắng sẽ được thay thế bằng một khoảng trắng và khoảng trắng ở đầu và cuối sẽ bị xóa, nếu không thì sep được sử dụng để tách và nối các từ