Python “{}.format()” 输出格式化方法
在Python中输入
help('FORMATTING')
可以得到完整的帮助文档如下
......................显示为部分内容................................
The grammar for a replacement field is as follows:
replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
field_name ::= arg_name ("." attribute_name | "[" element_index "]")*
arg_name ::= [identifier | digit+]
attribute_name ::= identifier
element_index ::= digit+ | index_string
index_string ::= <any source character except "]"> +
conversion ::= "r" | "s" | "a"
format_spec ::= <described in the next section>
...................................................................
程序员的修炼大概就是看一眼上面的文档就通晓下面的所有吧😆😆😆
1. 传统的写法 (C程序员很习惯的写法)
输出结果: 输出项1=1 输出项2=2 输出项3=3 输出项4=4
output_string = "输出项1=%s 输出项2=%s 输出项3=%s 输出项4=%s" % (1,2,3,4)
print(output_string)
2. 使用 “{}.format()” 基本语法
输出结果: 输出项1=1 输出项2=2 输出项3=3 输出项4=4
output_string = "输出项1={} 输出项2={} 输出项3={} 输出项4={}".format(1,2,3,4)
print(output_string)
3. 注意 “{}.format()” 的 {index} 含义
注意这里{index},大括号中的 ‘index’ 是后面format中参数的index,
从 ‘0’ 开始到 ‘参数个数-1’
输出结果: 输出内容:4 输出内容:2 输出内容:3 输出内容:1
output_string = "输出内容:{3} 输出内容:{1} 输出内容:{2} 输出内容:{0}".format(1,2,3,4)
print(output_string)
4. index 可以是反映业务含义的字符串,提高编程效率且减少错误
my_fruit = "banana"
my_ball = "football"
my_drink = "beer"
这样函数格式按照index名字来匹配,专注后面变量的处理与代换,只要index正确,输出就不会出错,方便自由。下面这三种输出的结果均为:
“我喜欢的水果是:banana,我也喜欢的球类是:football,我还喜欢的饮料是:beer”
可以看出这给编程与程序维护带来了极大方便, “{}.format()” 的真正好处
hobbies = "我喜欢的水果是:{fruit},我也喜欢的球类是:{ball},我还喜欢的饮料是:{drink}"\
.format(ball=my_ball,fruit=my_fruit,drink=my_drink)
print(hobbies)
hobbies = "我喜欢的水果是:{fruit},我也喜欢的球类是:{ball},我还喜欢的饮料是:{drink}"\
.format(drink=my_drink,fruit=my_fruit,ball=my_ball)
print(hobbies)
hobbies = "我喜欢的水果是:{fruit},我也喜欢的球类是:{ball},我还喜欢的饮料是:{drink}"\
.format(fruit=my_fruit,drink=my_drink,ball=my_ball)
print(hobbies)
5. format的各种活用
{index : align width} '<'居左, '>'居右, '^'居中
不指定填充字符的时候,默认填充字符为空格
# 输出结果: 右对齐左填充[ 输出项3] 左对齐右填充[输出项2 ] 中间对齐[ 输出项1 ]
output_string= "右对齐左填充[{2:>10}] 左对齐右填充[{1:<10}] 中间对齐[{0:^10}]"\
.format('输出项1','输出项2','输出项3')
print(output_string)
### 注意下面填充字符的指定,对齐方式的指定,以及字符串的居左,居中,居右方式设定
### 输出结果: 右对齐左填充[######输出项1] 左对齐右填充[输出项2******] 中间对齐[$$$输出项3$$$]
output_string= "右对齐左填充[{0:#>10}] 左对齐右填充[{1:*<10}] 中间对齐[{2:$^10}]"\
.format('输出项1','输出项2','输出项3')
print(output_string)
以下各种格式化方式可自行测试,灵活运用。
# 指定了字符串的输出宽度(默认左对齐,空格填充)
# 输出结果: 【love 】
output_string = "【{:8}】".format("love")
print(output_string)
# 如果输出字符串的长度大于指定长度,则直接输出字符串
# 输出结果: 【Love is wonderful】
output_string = "【{:8}】".format("Love is wonderful")
print(output_string)
# 如果宽度与截断长度同时指定:先进行截断操作,然后按照宽度及填充方式进行填充
# 输出结果: 【#######Love is 】
output_string = "【{:#>15.8}】".format("Love is wonderful")
print(output_string)
# 如果截断长度大于了实际字符的长度则直接取输出字符,必要时进行填充然后输出
# 输出结果: 【#############Love is wonderful】
output_string = "【{:#>30.20}】".format("Love is wonderful")
print(output_string)
# format() 会在可能的情况下进行隐式类型转换,下面两个例子都能正常输出
# 两个输出结果均为:【123-456】
output_string = '【{}-{}】'.format("123","456")
print(output_string)
output_string = '【{}-{}】'.format(123,456)
print(output_string)
# 浮点数默认的截断小数位为6位,截断的时候自动进行四舍五入的处理
# 输出结果是:[3.141593]
output_string = '[{:f}]'.format(3.1415926535758932)
print(output_string)
# 浮点数默认的截断小数位为6位,截断的时候自动进行四舍五入的处理
# 注意: 若对浮点数进行填充指定则无效,不输出结果:
# '[{:^*12.8f}]'.format(3.14159268),也不报错!!!
# 下面语句的输出结果: [ 3.14159265]
output_string = '[{:>12.8f}]'.format(3.1415926535758932)
print(output_string)
# 输出结果: [000000012345], 居右前补零
output_string = '[{:>012d}]'.format(12345)
print(output_string)
# 输出结果: [ 12345], 居右前补空格
output_string = '[{: >12d}]'.format(12345)
print(output_string)
# 下面的输出结果是: [ 12345.12]
output_string = '[{: >12.2f}]'.format(12345.12345)
print(output_string)
# 当使用 'f' 时,可以传入整数d;
# 但当使用 'd' 时,不能传入小数,下面的写法Python会报错
# output_string = '[{: >12d}]'.format(123.45)
# ValueError: Unknown format code 'd' for object of type 'float'
output_string = '[{: >12d}]'.format(123.45)
print(output_string)
来源:CSDN
作者:Bright Stone
链接:https://blog.csdn.net/hmllittlekoi/article/details/104442275