参数传递方式
基本语法是通过 {} 和 : 来代替以前的 % 。
>>> "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'