美文网首页
Python3 - 字符串中的变量替换

Python3 - 字符串中的变量替换

作者: 惑也 | 来源:发表于2018-12-19 17:06 被阅读29次

问题

创建一个内嵌变量的字符串,指定字符串替换掉变量。

解决方案

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的方法。

相关文章

网友评论

      本文标题:Python3 - 字符串中的变量替换

      本文链接:https://www.haomeiwen.com/subject/vhgjkqtx.html