Python format 用法详解
一、填充字符串
1. 位置
print("hello {0}, this is {1}.".format("world", "python")) # 根据位置下标进行填充 print("hello {}, this is {}.".format("world", "python")) # 根据顺序自动填充 print("hello {0}, this is {1}. {1} is a new language.".format("world", "python")) # 同一参数可以填充多次
输出:
hello world, this is python. hello world, this is python. hello world, this is python. python is a new language.
2. key
obj = "world" name = "python" print("hello {obj}, this is {name}.".format(obj = obj, name = name))
输出:
hello world, this is python.
3. 列表
list = ["world", "python"] print("hello {names[0]}, this is {names[1]}.".format(names = list))
输出:
hello world, this is python.
4. 字典
dict = {"obj":"world", "name":"python"} print("hello {names[obj]}, this is {names[name]}.".format(names = dict))
输出:
hello world, this is python.
注意:
访问字典的 key,不用引号。
5. 类属性
class Names(): obj = "world" name = "python" print("hello {names.obj}, this is {names.name}.".format(names = Names))
输出:
hello world, this is python.
6. 魔法参数
args = [",", "inx"] kwargs = {"obj": "world", "name": "python"} print("hello {obj}{} this is {name}.".format(*args, **kwargs))
输出:
hello world, this is python.
注意:
这里的 format(*args, **kwargs)
等价于 format(",", "inx", obj = "world", name = "python")
。
二、数字格式化
数字 | 格式 | 输出 | 描述 |
---|---|---|---|
3.1415926 | {:.2f} | 3.14 | 保留小数点后两位 |
3.1415926 | {:+.2f} | +3.14 | 带符号保留小数点后两位 |
-1 | {:+.2f} | -1.00 | 带符号保留小数点后两位 |
2.71828 | {:.0f} | 3 | 不带小数 |
5 | {:0>2d} | 05 | 数字补零 (填充左边, 宽度为2) |
5 | {:x<4d} | 5xxx | 数字补x (填充右边, 宽度为4) |
10 | {:x<4d} | 10xx | 数字补x (填充右边, 宽度为4) |
1000000 | {:,} | 1,000,000 | 以逗号分隔的数字格式 |
0.25 | {:.2%} | 25.00% | 百分比格式 |
1000000000 | {:.2e} | 1.00e+09 | 指数记法 |
13 | {:>10d} | 13 | 右对齐 (默认, 宽度为10) |
13 | {:<10d} | 13 | 左对齐 (宽度为10) |
13 | {:^10d} | 13 | 中间对齐 (宽度为10) |
11 | '{:b}'.format(11) | 1011 | 二进制 |
11 | '{:d}'.format(11) | 11 | 十进制 |
11 | '{:o}'.format(11) | 13 | 八进制 |
11 | '{:x}'.format(11) | b | 十六进制 |
11 | '{:#x}'.format(11) | 0xb | 十六进制 |
11 | '{:#X}'.format(11) | 0xB | 十六进制 |
三、其他用法
1. 转义
print("{{hello}} {{{0}}}".format("world"))
输出:
{hello} {world}
2. format 作为函数变量
name = "python" hello = "hello, welcome to {} world!".format print(hello(name))
输出:
hello, welcome to python world!
3. 格式化 datatime
from datetime import datetime now = datetime.now() print("{:%Y-%m-%d %X}".format(now))
输出:
2020-12-15 19:46:24
4. {}内嵌{}
print("hello {0:>{1}} ".format("world", 10))
输出:
hello world