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

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)
  • 32
    点赞
  • 139
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值