我在python中使用dict试图用字典中的任何内容替换字符串中的单词。但是,当我尝试运行我的代码时,它会输出错误" ValueError:expected':'格式说明符之后。"我不知道这个错误可能来自哪里。有更多pythonic智慧的人对我有什么建议吗? 谢谢!
以下是我的代码示例:
str = """{fruit}"""
dict = {"fruit":"pears"}
str.replace(**dict)
这应该使str包含" pears"。
更新
我故意使用三重引号字符串 - 在我的代码中我试图用多行字符串替换, 此外,我的代码已经使用.format方法。我只是决定在我的代码之间将它翻译到这里时混合使用。这是我的示例代码的更新版本,它不起作用。
my_dict = """{fruit}"""
dict = {"fruit":"pears"}
string.format(**my_dict)
最终更新
感谢下面收到的所有答案。我没有很好地解释我的问题,并决定简化它,简化了我的问题。我正在做一些元编程,所以我试图在C函数定义中替换,而python试图使用" {"作为格式标识符。我需要使用" {{"让python将括号识别为char,而不是将其作为格式标识符的开头。
答案 0 :(得分:7)
您想使用replace()
功能代替string = "{fruit}"
my_dict = {"fruit": "pears"}
print(string.format(**my_dict))
:
pears
<强>输出强>
str
其他一些事情:您不应将Python关键字dict
和{{1}}用作变量名称。为清楚起见,我更改了变量名称。
另外,你使用带有三引号的多行字符串没有特别的原因,所以我也改了。
答案 1 :(得分:2)
用字典替换句子的另一种简单方法。我希望你喜欢简单。另请查看此Single Pass Multiple Replace
import re
s = "node.js ruby python python3 python3.6"
d = {'python': 'python2.7', 'python3': 'python3.5', 'python3.6': 'python3.7'}
pattern = re.compile(r'\b(' + '|'.join(d.keys()) + r')\b')
result = pattern.sub(lambda x: d[x.group()], s)
print result
这只会匹配整个单词。