我从使用Python的re
模块中学到的是,在使用re
函数时,总是创建一个match
对象
有人能解释一下这段代码的工作原理吗?我熬不过去了。你知道吗
import re
text = "1 < than 2 > 0 & not 'NULL'"
html_escapes = {'&': '&',
'<': '<',
'>': '>',
'"': '"',
'\'': '''}
def multiwordreplace(txt, worddict):
rc = re.compile('|'.join(map(re.escape, worddict)))
def translate(match):
return worddict[match.group(0)]
return rc.sub(translate, txt)
print multiwordreplace(text, html_escapes)
这个match
对象来自哪里?你知道吗
相当于
也就是说,编译的regex
a
是pattern
,b
是替换repl
,c
是string
。你知道吗在这种情况下,
repl
是函数,translate
。从the docs:match
参数由re.sub
为string
中的每个匹配项提供,函数返回worddict
中的适当替换项以替换为txt
。你知道吗你也可以这样写:
我假设你的意思是
match
在:起源于。Python支持函数式编程的概念,其中可以将函数作为参数传递。你知道吗
如果你这样称呼
re.sub
为:translate
是一个函数。而rc.sub
所做的就是寻找匹配项。每次匹配,都会用生成的参数调用函数。结果是该函数的替代。你知道吗另一个例子是
map
函数:因此,所发生的是用函数调用
map
。然后迭代lst
,对于每个元素x
,用x
调用f
。结果将附加到列表中。你知道吗因此,您不必传递带有参数的
translate
来获得值,您可以传递函数,这样另一个函数就可以用几个(不同)值本身调用该函数。你知道吗相关问题 更多 >
编程相关推荐