问题
创建一个内嵌变量的字符串,指定字符串替换掉变量。
解决方案
Python并没有对在字符串中简单替换变量值提供直接的支持。 通过使用字符串的 format()
方法来解决这个问题。比如:
s = '{name} has {n} messages.'
print(s.format(name='Guido', n=37))
Guido has 37 messages.
或者,如果被替换的变量能在变量域中找到, 那么可以结合使用 format_map()
和 vars()
。就像下面这样:
name = 'Guido'
n = 37
s = '{name} has {n} messages.'
print(s.format_map(vars()))
Guido has 37 messages.
format()
和 format_map()
的一个缺陷就是它们并不能很好的处理变量缺失的情况,比如:
s = '{name} has {n} messages.'
print(s.format(name='Guido'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'n'
在python3中,有一种可读性更强,更方便的替代方法,在字符串前加f
,需要被替代的变量外加花括号{}
,其命名与替代变量的名称相同
name = 'Guido'
n = 37
print(f"{name} has {n} messages.")
Guido has 37 messages.
讨论
多年以来由于Python缺乏对变量替换的内置支持而导致了各种不同的解决方案。在Python3中,推荐使用在字符串前加f
的方法。
网友评论