为了账号安全,请及时绑定邮箱和手机立即绑定

使用模板“ SyntaxError:关键字不能是表达式”

使用模板“ SyntaxError:关键字不能是表达式”

互换的青春 2021-03-30 17:14:13
我要向一个函数传递一个字符串command和一个字符串列表,ports 例如:command = "a b c {iface} d e f"ports = ["abc", "adsd", "12", "13"]这些都传递给此函数,在这里我想获取多个命令字符串,用{iface}其中的每个元素替换 portsdef substitute_interface(command, ports):    t = string.Template(command)    for i in ports:        print t.substitute({iface}=i)标题出现错误,我在做什么错?
查看完整描述

2 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

从文档:


$ identifier命名与映射键“ identifier”匹配的替换占位符


因此,您需要一个$符号,否则模板将无法找到占位符,然后传递iface = p给substitute函数或字典。


>>> command = "a b c ${iface} d e f"  #note the `$`

>>> t = Template(command)

>>> for p in ports:

    print t.substitute(iface = p) # now use `iface= p` not `{iface}`

...     

a b c abc d e f

a b c adsd d e f

a b c 12 d e f

a b c 13 d e f

无需任何修改,您就可以将此字符串"a b c {iface} d e f"与结合使用str.format:


for p in ports:

    print command.format(iface = p)

...     

a b c abc d e f

a b c adsd d e f

a b c 12 d e f

a b c 13 d e f


查看完整回答
反对 回复 2021-04-06
  • 2 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信