Python ValueError:expect':'格式说明符之后

时间:2016-01-29 15:38:00

标签: python

我在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,而不是将其作为格式标识符的开头。

2 个答案:

答案 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

这只会匹配整个单词。

相关问题