如何在模板文件中替换变量名的一部分

时间:2019-04-17 22:28:38

标签: python python-2.7

我正在尝试从示例模板文件写入文件。 我只需将$UPPERINTERFACE替换为interface

这是示例template.txt

localparam $UPPERINTERFACE_WDTH = 1;
localparam $UPPERINTERFACE_DPTH = 8;
localparam $UPPERINTERFACE_WTCHD = 2;

这是代码:

from string import Template
intf = "interface"
rdfh = open("template.txt", "r").readlines()
wrfh = open("myfile.txt", "w")
for line in rdfh:
    s = Template(line)
    s = s.substitute(UPPERINTERFACE=intf.upper())
    wrfh.write(s)
rdfh.close()
wrfh.close()

预期输出:

localparam interface_WDTH = 1;
localparam interface_DPTH = 8;
localparam interface_WTCHD = 2;

由于将$UPPERINTERFACE_WDTH作为要替换的变量,因此出现以下错误:

KeyError: 'UPPERINTERFACE_WDTH'

有什么办法可以在这里用$UPPERINTERFACE仅替换interface吗?

1 个答案:

答案 0 :(得分:1)

您可以使用大括号{}来缩小模板关键字的范围,如以下模板字符串所示:

>>> line = 'localparam ${UPPERINTERFACE}_WDTH = 1;'
>>> Template(line).substitute(UPPERINTERFACE=intf.upper())
'localparam INTERFACE_WDTH = 1;'

documentation指出以下内容:

  

${identifier}等效于$identifier。当有效的标识符字符位于占位符之后但不属于占位符时,例如"${noun}ification",则是必需的。