个人知识库
Author: 刘杰文, Date: Unknown, Categories: , Tags:
links:
格式化字符串有三种方式,使用%
、format()
和 f-string。
其中,使用%
的方式从早期开始就有了,使用format()
的方式是从 Python 2.5 开始的,而使用 f-string 的方式是从 Python 3.6 开始的。
这里预先准备两个值:
var_a = "Hello"
var_b = "Hi"
s = "%s, World!" % (var_a)
print(s)
Hello, World!
s = "%s/%s, World!" % (var_a, var_b)
print(s)
Hello/Hi, World!
- 其中
%s
就是格式化符,意思是把后面的值格式化为字符类型,类似的格式化符还有%d
,%f
等,具体参考文章Python字符串格式化
使用这种方式可能会遇到TypeError
问题;另外建议都用小括号包围参数列表。
这种方式只能在后面的参数列表指定顺序,而format()
的使用则是更加灵活,可以反过来使用.
这种方式如果缺少了参数的位置,也会报TypeError
错误,而format()
不会。format()
选择自动忽略多余参数。
s = "{}, World!".format(var_a)
print(s)
Hello, World!
s = "{}/{}, World!".format(var_a, var_b)
print(s)
Hello/Hi, World!
s = "{1}/{0}, World!".format(var_a, var_b)
print(s)
Hi/Hello, World!
s = "{1}/{var3}/{0}, World!".format(var_a, var_b, var3='['+var_b+']')
print(s)
Hi/[Hi]/Hello, World!
参数列表默认编号是0, 1, 2, 3, ...
这样的序列,但不包括指定的编号/名称,因此可以混用。
format()
是最灵活的方式,即便它还是没有那么美观。最美观自然的当属 f-string,但是论拓展性,比如支持翻译支持多语言的潜力上,只有format()
是可以胜任的。
f-string实际上是一个运行时动态计算的表达式,做的是替换工作,因此这个字符串本身不是个常量值。
s = f'{var_a}/{var_b}, World!'
print(s)
Hello/Hi, World!