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