用法可以参考Python 的字符串格式示例(format examples) 。咱们这里自己造个场景:打印表格。

Python格式化字符串字面值 | 被官方文档称之为『漂亮』的输出格式

本文参考输入输出 — Python 3.7.10 文档。首先声明咱的实验环境 。

❯ python --version
Python 3.7.0

引例:场景带来的需求

我们要在控制台上给用户反馈计算结果(比如

AOE值为 0.82 
) ,于是就要写
print
逻辑 。描述计算结果的语句是死的(
AOE值为
),但数字是活的(
0.82
)。我们希望把计算结果拼接到描述结构的语句上。新手可能会用字符串的拼接(字符串的「加法运算」
+
) 。

val_dict = {
    'AOE': 0.8200001,
    'wcb': 13423431,
    'p': 0.0314
}

print("AOE值为 " + str(val_dict['AOE']) + " ,wcb值为 " + str(val_dict['wcb']))
if val_dict['p'] < 0.05: print('拒绝原假设')
else: print('接收原假设')

输出:

AOE值为 0.8200001 	,wcb值为 13423431
拒绝原假设

我们将介绍一种格式化方法 ,无论是书写还是易读,都比上述方法要优雅。

并且,我们将解决字符串拼接不能自动解决的

小数位
、
科学计数法
等问题。

格式化字符串字面值

官方文档:要使用

格式化字符串字面值
,请在字符串的开始引号或三引号之前加上一个
f
F
 。在此字符串中,你可以在
{
}
字符之间写可以引用的变量或字面值的
Python
表达式。

有点费解,还是看实例最清晰。

咱们把上面的代码改一下 。

print(f"AOE值为 {val_dict['AOE']} 	,wcb值为 {val_dict['wcb']}")
print(f"{'拒绝原假设' if val_dict['p'] < 0.05 else '接收原假设'}")

输出:

AOE值为 0.8200001 ,wcb值为 13423431
拒绝原假设

没毛病,和之前的写法效果一模一样。但是咱们这回直接把「活的」变量『嵌入』到「死的」句子里面去了。

而且咱还把逻辑写进了字符串 ,说明在

f"{}"
{}
大括号里面,放变量和表达式都行 。

再把上面的例子变个形,来看看更多用法:比如在

{}
大括号里做简单的运算 ,或者使用一些特殊格式化语法保留小数 、转化为科学计数法。

print(f"AOE值为 {val_dict['AOE'] * 100}% ,wcb值为 {val_dict['wcb'] :E}")
print(f"{'拒绝原假设' if val_dict['p'] < 0.05 else '接收原假设'}")

输出:

AOE值为 82.00001% ,wcb值为 1.342343E+07
拒绝原假设

注意到上面我们用了

{val_dict['wcb'] :E}
这样的特殊语法 ,
:E
表示把数字
val_dict['wcb']
转换为科学计数法。

类似

:E
,我们还有更多用法 。在 Python 中,其名称为格式规格迷你语言(format specification mini language) 。

我们可以直接应用

:.2%
来表示「让数字变成百分数
%
,并且保留两位小数(
.2
)」。

print(f"AOE值为 {val_dict['AOE'] :.2%}% 	,wcb值为 {val_dict['wcb'] :E}")
print(f"{'拒绝原假设' if val_dict['p'] < 0.05 else '接收原假设'}")

输出:

AOE值为 82.00%% ,wcb值为 1.342343E+07
拒绝原假设

岂不是要比

{val_dict['AOE'] * 100}%
的写法优雅很多。

更多示例

其他用法可以参考Python的字符串格式示例(format examples) 。咱们这里自己造个场景:打印表格。

table = {
    'Tom': [31, 32.314, 31, .423],
    'Jerry': [1, .41, 313, 123],
    'Paul': [7, .4, 53, .45754]
}

def print_table(t):
    print('|  name  |  attr  |  feat  |  gest  |  dest  |')
    print('|--------|--------|--------|--------|--------|')
    for name, vals in table.items():
        print(f'|{name :_^8}|{vals[0] :^8}|{vals[1] :>6.2f}  |{vals[2] :^8}|{vals[3] :>8.3f}|')

print_table(table)

输出:

|  name  |  attr  |  feat  |  gest  |  dest  |
|--------|--------|--------|--------|--------|
|__Tom___|   31   | 32.31  |   31   |   0.423|
|_Jerry__|   1    |  0.41  |  313   | 123.000|
|__Paul__|   7    |  0.40  |   53   |   0.458|

如上:

  • 我们的数据在
    table
    里存储了数据
  • print_table
    保存了打印数据的逻辑
    • f
      {name :_^8}
      中,
      ^
      表示居中 ,
      8
      表示长度为
      8
      ,
      _
      表示填充
      _
      (默认填充空格)
    • f
      {vals[1] :>6.2f}
      中,
      >6
      表示长度为
      6
      且靠右 ,
      .2f
      表示作为小数,且保留
      2

更多的内容除了参考官方文档,菜鸟教程的Python格式化函数也是不错的中文资料。

以后随用随查 ,在搜索引擎中输入关键字

python + 格式化输出
即可 。

我是小拍,欢迎加我微信 PiperLHJ 转载交流。

文章来源于网络,如有侵权请联系站长QQ61910465删除
本文版权归趣KUAI排www.SEOguruBlog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系QQ→61910465