美文网首页
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