下面的代码将匹配的 <template id="homepage_extend" inherit_id="website.homepage">
<xpath expr="//div[@class='main']" position='inside'>
<h1>FOO 2</h1>
</xpath>
</template>
字典键替换为变量 <template id="homepage_extend" inherit_id="website.homepage">
<xpath expr="//div[@class='header']" position='replace'>
<div class="header">
<h1>FOO<h1>
<div class="main">
<h1>FOO 2</h1>
</div>
</div>
</xpath>
</template>
中的值。
<template id="website.homepage">
<div class="header">
<h1>FOO<h1>
<div class="main">
<h1>FOO 2<h1>
</div>
</div>
</template>
在这种情况下,Lambda函数用于声明变量symblsDict
并保持匹配模式结果。我不理解变量line
如何具有匹配模式结果,因为我们没有为keys1 = ('|'.join(symblsDict.keys()))
robj1 = re.compile(keys1)
result = robj1.sub(lambda m: symblsDict[m.group(0)], line)
分配任何值,只是在函数中声明?
m
答案 0 :(得分:0)
将lambda函数传递给已编译的正则表达式模式的sub
方法。每当模式匹配某些文本时,该方法将使用“匹配”对象调用该函数。
调用该函数时,参数名m
将绑定到匹配对象。 lambda
中冒号后面的表达式可以使用参数m
来计算返回值,sub
将替换为字符串。