格式化字符串

个人知识库

Author: 刘杰文, Date: Unknown, Categories: , Tags:

格式化字符串

links:

  1. https://blog.csdn.net/zjbyough/article/details/96466658

Mine

格式化字符串有三种方式,使用%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()选择自动忽略多余参数。

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

f-string实际上是一个运行时动态计算的表达式,做的是替换工作,因此这个字符串本身不是个常量值。

s = f'{var_a}/{var_b}, World!'
print(s)
Hello/Hi, World!