Python 3.6 引入了格式化字符串字面量,通常被称为 f-strings。它们使字符串内嵌变量和表达式的插入变得更加简单和直观。在这里我们展示f-string常用的六种格式化技巧以及应用示例。
1. 精确到小数点后几位
使用 :.nf
格式化浮点数,其中 n
是小数点后的位数。
pi = 3.14159
# 保留两位小数
print(f"{pi:.2f}") # 结果: 3.14
# 保留三位小数
print(f"{pi:.3f}") # 结果: 3.142
# 保留四位小数
print(f"{pi:.4f}") # 结果: 3.1416
# 不保留小数位数
print(f"{pi:.0f}") # 结果: 3
2. 百分比格式
将浮点数格式化为百分比表示,使用 :.n%
。
percent = 0.1234
# 无小数点
print(f"{percent:.0%}") # 结果: 12%
# 保留一位小数
print(f"{percent:.1%}") # 结果: 12.3%
# 保留两位小数
print(f"{percent:.2%}") # 结果: 12.34%
# 保留三位小数
print(f"{percent:.3%}") # 结果: 12.340%
3. 定宽格式化
为了输出固定宽度的字符串,使用 :n
、:<n
、:^n
分别进行右对齐、左对齐、居中。还可以用特定字符进行填充,如 :*^n
text = "Hello"
# 左对齐,总宽度10
print(f"{text:<10}") # 结果: 'Hello '
# 右对齐,总宽度10
print(f"{text:>10}") # 结果: ' Hello'
# 居中对齐,总宽度10
print(f"{text:^10}") # 结果: ' Hello '
number = 123
# 数字右对齐,总宽度10
print(f"{number:>10}") # 结果: ' 123'
# 数字左对齐,总宽度10
print(f"{number:<10}") # 结果: '123 '
# 数字居中对齐,总宽度10
print(f"{number:^10}") # 结果: ' 123 '
text = "Python"
# 使用星号(*)填充,左对齐
print(f"{text:*<10}") # 结果: 'Python****'
# 使用星号(*)填充,右对齐
print(f"{text:*>10}") # 结果: '****Python'
# 使用星号(*)填充,居中对齐
print(f"{text:*^10}") # 结果: '**Python**'
text = "unique"
# 使用井号 (#) 填充,居中对齐
print(f"{text:#^10}") # 结果: '##unique##'
4. 带千位分隔符的数字
使用 :,
在数字中添加千位分隔符。
# 中等大小的数字
medium_number = 12345
print(f"{medium_number:,}") # 结果: 12,345
# 较大的数字
large_number = 987654321
print(f"{large_number:,}") # 结果: 987,654,321
# 很小的数字(不足千位)
small_number = 123
print(f"{small_number:,}") # 结果: 123(没有分隔符)
# 浮点数的千位分隔符
float_number = 123456.789
print(f"{float_number:,.2f}") # 结果: 123,456.79
# 在这个例子中,:, 添加了千位分隔符,.2f 指定了保留两位小数。
# 负数
negative_number = -1234567
print(f"{negative_number:,}") # 结果: -1,234,567
5. 指数记法
将数字格式化为指数(科学计数法)表示,使用 :e
。
# 小数点以下没有显著数字
small_number = 0.00000123
print(f"{small_number:e}") # 结果: 1.230000e-06
# 负数
negative_number = -123456.789
print(f"{negative_number:.2e}") # 结果: -1.23e+05
# 非常大的数
large_number = 123456789012345
print(f"{large_number:e}") # 结果: 1.234568e+14
# 非常小的数
tiny_number = 0.00000000012345
print(f"{tiny_number:e}") # 结果: 1.234500e-10
6. 数字的不同进制表示
将数字格式化为十六进制、八进制、二进制表示,分别使用 :x
、:o
、:b
。
number = 255
print(f"{number:x}") # 十六进制,结果: ff
print(f"{number:o}") # 八进制,结果: 377
print(f"{number:b}") # 二进制,结果: 11111111
实在是太有用辣
以上