我可以从用户那里接收两种类型的字符串。
cmd1 = inst1.exe license.dat
cmd2 = {{installer}} {{license}}
我必须将括号之间的字符串替换为字典({'installer': 'inst1.exe', 'license': 'license.dat'}
)
我正在尝试这样做:
def my_replace_method(cmd, dict)
for key, value in dictionary.items():
cmd.replace(key, value)
电话:
my_replace_method(cmd2, dict)
我得到的输出是:"{{inst1.exe}} {{license.dat}}"
而不是"inst1.exe license.dat"
和
my_replace_method(cmd1, dict)
输出是"inst1.exe license.dat.dat"
而不是"inst1.exe license.dat"
我期望这两个命令的输出是:inst1.exe license.dat我怎样才能写一个对两种类型的输入都有效的方法?
您应该使用cmd.replace("{{"+key+"}}", value)
或cmd.replace('{{%s}}'%key, value)
,因为仅使用replace
替换文本,而仅使用您提供的文本。
所以如果你也想匹配大括号,你需要包括大括号。
编辑:
这两个错误的原因如下:
- 大括号不在旧字符串中(也就是你没有用新字符串替换大括号),所以它们被留下了,因此额外的大括号。
- 由于大括号不在旧字符串中,Python将
license
替换为license.dat
,而不是将{{licence}}
替换为license.dat
,因此license.dat
变为license.dat.dat