【问题标题】:How to replace keywords, marked with {key} inside Strings with the value in dict["key"] [duplicate]如何用dict [“key”]中的值替换字符串中用{key}标记的关键字[重复]
【发布时间】:2017-06-06 23:36:34
【问题描述】:

我想写一个接受字符串和字典的方法。 该方法应该扫描字符串并将 {word} 内的每个单词替换为 dic["word"] 的值。

例子:

s = "Hello my name is {name} and I like {thing}"
dic = {"name": "Mike", "thing": "Plains"}

def rep(s, dic):
   return "Hello my name is Mike and I like Plains"

我的意思是它是一个简单的问题,很容易解决,但我寻找不错的 python 方式。

【问题讨论】:

    标签: python string


    【解决方案1】:

    您可以将dictstr.format 函数中解包为:

    >>> s = "Hello my name is {name} and I like {thing}"
    >>> dic = {"name": "Mike", "thing": "Plains"}
    
    #             v unpack the `dic` dict
    >>> s.format(**dic)
    'Hello my name is Mike and I like Plains'
    

    要了解如何在 Python 中解包,请查看:What does ** (double star) and * (star) do for parameters?

    【讨论】:

    【解决方案2】:

    Moinuddin Quadri 的解决方案有效且简短。但在某些情况下,您可能希望在关键字周围使用其他模式(例如 {hello} 而不是 ^hello^)。然后你可以使用这样的函数:

    def format(string_input, dic, prefix="{", suffix="}"):
        for key in dic:
            string_input = string_input.replace(prefix + key + suffix, dic[key])
        return string_input
    

    这样你可以使用任何你喜欢的周围字符。

    例子:

    print(format("Hello, {name}", {"name": "Mike"}))
    Hello, Mike
    print(format("Hello, xXnameXx", {"name":"Mike"}, "xX", "Xx"))
    Hello, Mike
    

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 2015-07-08
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 2017-05-07
      • 2021-05-14
      • 2022-01-15
      相关资源
      最近更新 更多