Python 的 format 格式化函数

参数传递方式

基本语法是通过 {} 和 : 来代替以前的 % 。

>>> "output {:.2f}".format(3.1415926)
'output 3.14'
>>> "output %.2f" % 3.1415926
'output 3.14'

format 函数可以接受不限个参数,位置可以不按顺序。

>>> "{} {}".format("hello", "world")    # 不设置指定位置,按默认顺序
'hello world'
>>> "{0} {1}".format("hello", "world")  # 设置指定位置
'hello world'
>>> "{1} {0} {1}".format("hello", "world")  # 设置指定位置
'world hello world'

也可以设置参数。

>>> "name: {name}, address: {address}".format(name="Looking", address="somewhere")
'name: Looking, address: somewhere'

>>> my_dict = {"name": "Looking", "address": "somewhere"}
>>> "name: {name}, address: {address}".format(**my_dict)
'name: Looking, address: somewhere'

>>> my_list = ["Looking", "somewhere"]
>>> "name: {0[0]}, address: {0[1]}".format(my_list)
'name: Looking, address: somewhere'

>>> my_list = ["Looking", "somewhere"]
>>> "name: {0}, address: {1}".format(*my_list)
'name: Looking, address: somewhere'

其实,Python3.6 以后新出来的 f-string 也是很受欢迎的,用起来也很方便,大家可以多多尝试一下。

>>> name = "Looking"
>>> address = "somewhere"
>>> "name: {name}, address: {address}"
'name: {name}, address: {address}'
>>> f"name: {name}, address: {address}"
'name: Looking, address: somewhere'

>>> my_dict = {"name": "Looking", "address": "somewhere"}
>>> f"name: {my_dict['name']}, address: {my_dict['address']}"
'name: Looking, address: somewhere'

>>> my_list = ["Looking", "somewhere"]
>>> f"name: {my_list[0]}, address: {my_list[1]}"
'name: Looking, address: somewhere'

数字格式化

^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。

+ 表示在正数前显示 +,负数前显示 -;  (空格)表示在正数前加空格

b、d、o、x 分别是二进制、十进制、八进制、十六进制。

保留两位小数

>>> "output {:.2f}".format(3.1415926)
'output 3.14'

带符号保留两位小数

>>> "output {:+.2f}".format(3.1415926)
'output +3.14'
>>> "output {:+.2f}".format(-3.1415926)
'output -3.14'

不带小数(可以理解为四舍五入)

>>> "output {:.0f}".format(3.1415926)
'output 3'
>>> "output {:.0f}".format(-3.1415926)
'output -3'
>>> "output {:.0f}".format(2.71828)
'output 3'
>>> "output {:.0f}".format(-2.71828)
'output -3'

数字补零 (右对齐,填充左边, 宽度为3)

>>> "output {:0>3d}".format(3)
'output 003'

空格填充 (右对齐,填充左边, 宽度为3) 

>>> "output {: >3d}".format(3)
'output   3'

数字补零 (左对齐,填充右边, 宽度为3)

>>> "output {:0<3d}".format(3)
'output 300'

空格填充 (左对齐,填充右边, 宽度为3) 

>>> "output {: <3d}".format(3)
'output 3  '

以逗号分隔的数字格式

符合西方国家千分位的风格

>>> "output {:,}".format(300000000000)
'output 300,000,000,000'

百分比格式

>>> "output {:.2%}".format(0.25)
'output 25.00%'
>>> "output {:.3%}".format(0.25)
'output 25.000%'

指数格式化

>>> "output {:.2e}".format(2500000)
'output 2.50e+06'

对齐方式(左对齐,居中,右对齐)

>>> "output {: <9d}".format(3)
'output 3        '
>>> "output {: ^9d}".format(3)
'output     3    '
>>> "output {: >9d}".format(3)
'output         3'

进制转换

>>> "output {:b}".format(11)  # 二进制
'output 1011'
>>> "output {:o}".format(11)  # 八进制
'output 13'
>>> "output {:d}".format(11)  # 十进制
'output 11'
>>> "output {:x}".format(11)  # 十六进制(小写)
'output b'
>>> "output {:X}".format(11)  # 十六进制(大写)
'output B'

猜你喜欢

转载自blog.csdn.net/TomorrowAndTuture/article/details/114317286