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

34次阅读

共计 2182 个字符,预计需要花费 6 分钟才能阅读完成。

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
回绝原假如

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

并且,咱们将解决字符串拼接不能主动解决的 小数位 迷信计数法 等问题。

格式化字符串字面值

官网文档:要应用 格式化字符串字面值,请在字符串的开始引号或三引号之前加上一个 fF。在此字符串中,你能够在 {} 字符之间写能够援用的变量或字面值的 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 转载交换。

正文完
 0