This article brings you a detailed introduction to the formatting of Python strings. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you. .
I believe that many people use the "%s" % v syntax when formatting strings. PEP 3101 proposes a more advanced formatting method str.format() and becomes the standard in Python 3. To replace the old %s formatting syntax, CPython has implemented this method since 2.6 (other interpreters have not verified it).
format()
The new format() method is actually more like a simplified version of the template engine (Template Engine), with very rich functions.
The replacement variable in the template is surrounded by {} and divided into two parts by :, the second half of which, format_spec, will be discussed separately later.
The first half has three uses:
This is consistent with the parameter category of function calls
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
In addition, just like the unpacking of function parameters, the unpacking operation can also be used directly in format()
print("{author}.{city}".format(**{"author": "Miracle", "city": "上海"})) print("{} {}".format(*["Miracle", "上海"])) Miracle.上海 Miracle 上海
In the template, you can also obtain the attributes or values in the variable through .identifier and [key] (it should be noted that "{}{}" is equivalent to "{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
Forced conversion, you can force the replaced variable through ! r|s|a
The part after the colon defines the output style
align represents the alignment direction, usually used in conjunction with width, and fill is the filling character (default is blank):
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
At the same time, it can be seen that {} can be nested in the style setting, but it must pass the keyword Specified, and can only be nested one level.
The next step is the symbol style: |-|' ' respectively specifies whether the number requires a mandatory symbol (the space means that it will not be displayed when the number is positive but one space will be reserved)
print("{0:+}\n{1:-}\n{0: }".format(3.14, -3.14)) # +3.14 # -3.14 # 3.14
Use Whether a prefix symbol is needed to represent numbers in special formats (binary, hexadecimal, etc.)
Comma is also used to represent numbers whether they need to be separated at the thousands place
0 is equivalent to the previous {:0=} is right-aligned and filled with 0s
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
Finally, Xiaopang will introduce to you the familiar decimal point precision issues, .n and formatting types.
Only some examples are given here, please refer to the documentation for details:
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 (default)
try: print("{:s}".format(123)) except: print("{}".format(456)) # 456
This article has ended here. For more exciting content, you can pay attention to the python video tutorial column on the PHP Chinese website!
The above is the detailed content of Detailed introduction to Python string formatting. For more information, please follow other related articles on the PHP Chinese website!