問題
創(chuàng)建一個內(nèi)嵌變量的字符串,指定字符串替換掉變量。
解決方案
Python并沒有對在字符串中簡單替換變量值提供直接的支持。 通過使用字符串的 format() 方法來解決這個問題。比如:
s = '{name} has {n} messages.'
print(s.format(name='Guido', n=37))
Guido has 37 messages.
或者,如果被替換的變量能在變量域中找到, 那么可以結(jié)合使用 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中,有一種可讀性更強(qiáng),更方便的替代方法,在字符串前加f,需要被替代的變量外加花括號{},其命名與替代變量的名稱相同
name = 'Guido'
n = 37
print(f"{name} has {n} messages.")
Guido has 37 messages.
討論
多年以來由于Python缺乏對變量替換的內(nèi)置支持而導(dǎo)致了各種不同的解決方案。在Python3中,推薦使用在字符串前加f的方法。