Lambda函数在下面的python代码片段中工作

时间:2017-02-15 04:55:15

标签: python string python-2.7 lambda expression

下面的代码将匹配的 <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

1 个答案:

答案 0 :(得分:0)

将lambda函数传递给已编译的正则表达式模式的sub方法。每当模式匹配某些文本时,该方法将使用“匹配”对象调用该函数。

调用该函数时,参数名m将绑定到匹配对象。 lambda中冒号后面的表达式可以使用参数m来计算返回值,sub将替换为字符串。