【问题标题】:Lambda function working in below python code snippetLambda 函数在以下 python 代码片段中工作
【发布时间】:2017-02-15 04:55:14
【问题描述】:

以下代码将匹配的 symblsDict 字典键替换为其变量 line 中的值。

keys1 = ('|'.join(symblsDict.keys()))
robj1 = re.compile(keys1)
result = robj1.sub(lambda m: symblsDict[m.group(0)], line)

在此上下文中,Lambda 函数用于声明变量 m 并保存匹配模式结果。我不明白变量m 是如何获得匹配模式结果的,因为我们没有分配任何值m,只是在函数中声明?

 Content of Dictionary:{'FTP': 'FTP,COND=(0,LE)', 'TOTAL.LIB6': 'TOTAL.TEST.LIB', 'TOTAL.CTRX': 'TOTAL.TEST.CTRX', 'DD1': 'ZZ.VVMSSB', 'JHSOUT': '*', 'SOUT': '*', 'SALEDB': 'TEST12', 'EMAIL': 'EMAIL,COND=(0,LE)'
    Content of keys1: FTP|TOTAL.LIB6|TOTAL.CTRX|DD1|JHSOUT|SOUT|SALEDB|EMAIL
    Content of line: //             SOUT=A,
    Output://             *=A,

【问题讨论】:

  • m 在函数签名lambda m: 中声明。

标签: python string python-2.7 lambda expression


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 2021-05-16
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多