Python 标准化输出
Document
Input and Output - formatted-string-literals | python docs
使用 f-strings
f-strings 是 Python 从 3.6 版本开始引入的一种字符串格式化方式,其全称为“格式化字符串字面量”。f-strings 使用更加简洁的语法,并且具有更高的可读性和性能。
f-strings 的语法使得可以直接在字符串中使用 {}
嵌入变量和python表达式,并允许在 :
后添加格式化字符说明。
1 | name, age, height = "zhang", 18, 1.7 |
1 | decimals = [1/deno for deno in range(1, 10)] |
语法
在冒号 :
后面加上 format specification 形如 f":format_specification"
格式,用于规范输出的格式。详细的参数如下:
1 | format_spec ::= ":[[fill]align][sign][#][0][width][,][.precision][type]" |
关于其中参数可选项的说明:
1 | fill ::= Any Character |
align 对齐方式
可选项
符号 | 描述 | 示例 |
---|---|---|
< | 左对齐 | f"{42:<5}" → 42 |
> | 右对齐 | f"{42:>5}" → 42 |
^ | 居中对齐 | f"{42:^5}" → 42 |
= | 填充符紧跟符号 | f"{-42:=+5}" → -0042 |
sign 符号
表示是否需要在数字前面加正负号+-
,其中 +
只对正数和 0 有效果,对负数不起作用;负数默认会带上 -
号,所以 -
并没有额外添加的必要;空格 " "
表示在正数和 0 前面加空格,用于占位,目的是和符数的 -
对齐。
1 | print(f"{42:^}") # 42 |
width 宽度 fill 填充
宽度控制输出的最小长度,不足时用填充字符补齐。这个宽度表示当前 {...}
输出一共占多少字符,包括 .
和 %
等字符。
填充字符可以是任何 Character,不填则默认为空格。
1 | print(f"{3.14:0>8.2f}") # 00003.14 |
数字格式
数字格式化用于控制整数和浮点数的显示形式。
整数类型:
符号 | 描述 | 示例 |
---|---|---|
d | 十进制整数 | f"{42:d}" → 42 |
b | 二进制 | f"{42:b}" → 101010 |
o | 八进制 | f"{42:o}" → 52 |
x | 十六进制(小写) | f"{42:x}" → 2a |
X | 十六进制(大写) | f"{42:X}" → 2A |
n | 本地化的十进制(带分隔符) | f"{1000:n}" → 1,000 |
浮点数类型:
符号 | 描述 | 示例 |
---|---|---|
f | 定点小数表示法 | f"{3.14159:.2f}" → 3.14 |
e | 科学计数法,小写 e | f"{1234.567:e}" → 1.234567e+03 |
E | 科学计数法,大写 E | f"{1234.567:E}" → 1.234567E+03 |
g | 根据值自动选择 f 或 e | f"{0.00001:g}" → 1e-05 |
% | 百分比表示法,自动乘以 100 | f"{0.12345:.2%}" → 12.35% |
一些示例
1 | pis = [3.1415926*i for i in range(4)] |
技巧
使用 = 号简化输出
使用 f"{var = }"
这种语法可以简化变量的输出,等价于 f"var = {var}"
。其中 =
号两边加不加空格会对应到输出中。
1 | pi = 3.14 |
多行书写
1 | print(f"pi: {3.1415926}\n" |
numpy.set_printoptions
使用 numpy.set_printoptions 可以统一设置 numpy array 输出格式, 而不需要单独对每一个 array 元素进行 f-string 的格式化
1 | import numpy as np |
1 | import numpy as np |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文羊羽!