输出格式化:format

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

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

顺序匹配

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

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

键值匹配

>>>"这是一个关于{0}、{1}和{girl}的故事。".format(
    "小明", "阿飞", girl="阿香"))
"这是一个关于小明、阿飞和阿香的故事。
示例数字格式输出描述
3.1415926{:.2f}3.14保留小数点后两位
3.1415926{:+.2f}+3.14带符号保留小数点后两位
5{:0>2}05数字补零 (靠右填充左边, 宽度为2)
5{:x<4}5xxx补x (靠左,填充右边, 宽度为4)
10{:x^4}x10x补x (居中填充, 宽度为4)
13{:10}13右对齐 ( 宽度为10),默认对齐方式
13{:<10}13左对齐 (宽度为10)
13{:^10}13中间对齐 (宽度为10)
1000000{:,}1,000,000以逗号分隔的数字格式

此外我们可以使用大括号 {} 来转义大括号,如下实例:

>>>"{} 对应的位置是 {{0}}".format("lengqie")
"lengqie 对应的位置是 {0}"

使用元组和字典传参

str.format() 方法还可以使用 *元组**字典 的形式传参,两者可以混合使用。
位置参数、关键字参数、*元组**字典 也可以同时使用,但是要注意,位置参数要在关键字参数前面,*元组 要在 **字典 前面。

# 使用元组传参
>>>infos = "钢铁侠", 66, "小辣椒"
>>>"我是{},身价{}亿。".format(*infos)
"我是钢铁侠,身价66亿。"

>>>"我是{2},身价{1}亿。".format(*infos)
"我是小辣椒,身价66亿。"

# 使用字典传参
>>>venom = {"name": "毒液", "weakness": "火"}
>>>"我是{name},我怕{weakness}。".format(**venom)

"我是毒液,我怕火。"

参考资料

FINTHON
团子大圆帅
菜鸟教程

文章目录