欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python "{}.format()" 输出格式化方法

程序员文章站 2022-07-15 08:12:30
...

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)