如何用字符串中的{key}替换标记为{key}的关键字[" key"]

时间:2017-01-22 10:23:21

标签: python string

我想写一个带字符串和字典的方法。 该方法应扫描字符串并将{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方式。

2 个答案:

答案 0 :(得分:8)

您可以将str.format功能中的dict解压缩为:

>>> 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?

答案 1 :(得分:1)

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