Python 隐式或未定义的匹配对象
通过使用Python的Python 隐式或未定义的匹配对象,python,regex,Python,Regex,通过使用Python的re模块,我学到的是,在使用re函数时,总是创建一个match对象 有人能解释一下这段代码的工作原理吗?我过不去 import re text = "1 < than 2 > 0 & not 'NULL'" html_escapes = {'&': '&', '<': '<', '>': '>',
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)
重新导入
text=“1<2>0&不为空”
html_转义={'&':'&;',
'': '',
'"': '"',
“\”:“&apos;”
def multiwordreplace(txt,worddict):
rc=re.compile('|'.join(map(re.escape,worddict)))
def翻译(匹配):
return worddict[match.group(0)]
返回rc.sub(翻译,txt)
打印多字替换(文本、html_转义)
这个匹配的对象来自哪里
x = re.compile(a)
x.sub(b, c)
相当于
re.sub(a, b, c)
i、 e.编译的正则表达式a
是模式
,b
是替换的repl
,c
是字符串
在这种情况下,repl
是一个函数,translate
。发件人:
如果repl是一个函数,则会为模式的每个非重叠出现调用它。函数接受单个匹配对象参数,并返回替换字符串
match
参数由re.sub
为string
中的每个匹配项提供,函数从worddict
返回适当的替换项,以替换为txt
你也可以这样写:
return rc.sub(lambda match: worddict[match.group(0)], txt)
相当于
re.sub(a, b, c)
i、 e.编译的正则表达式a
是模式
,b
是替换的repl
,c
是字符串
在这种情况下,repl
是一个函数,translate
。发件人:
如果repl是一个函数,则会为模式的每个非重叠出现调用它。函数接受单个匹配对象参数,并返回替换字符串
match
参数由re.sub
为string
中的每个匹配项提供,函数从worddict
返回适当的替换项,以替换为txt
你也可以这样写:
return rc.sub(lambda match: worddict[match.group(0)], txt)
相当于
re.sub(a, b, c)
i、 e.编译的正则表达式a
是模式
,b
是替换的repl
,c
是字符串
在这种情况下,repl
是一个函数,translate
。发件人:
如果repl是一个函数,则会为模式的每个非重叠出现调用它。函数接受单个匹配对象参数,并返回替换字符串
match
参数由re.sub
为string
中的每个匹配项提供,函数从worddict
返回适当的替换项,以替换为txt
你也可以这样写:
return rc.sub(lambda match: worddict[match.group(0)], txt)
相当于
re.sub(a, b, c)
i、 e.编译的正则表达式a
是模式
,b
是替换的repl
,c
是字符串
在这种情况下,repl
是一个函数,translate
。发件人:
如果repl是一个函数,则会为模式的每个非重叠出现调用它。函数接受单个匹配对象参数,并返回替换字符串
match
参数由re.sub
为string
中的每个匹配项提供,函数从worddict
返回适当的替换项,以替换为txt
你也可以这样写:
return rc.sub(lambda match: worddict[match.group(0)], txt)
我假设您指的是匹配
的位置:
def translate(match):
return worddict[match.group(0)]
起源于。Python支持函数式编程的概念,其中可以将函数作为参数传递
如果您这样调用re.sub
作为:
rc.sub(translate, txt)
translate
是一个函数。而rc.sub
所做的就是寻找匹配项每次匹配,都会使用生成的参数调用函数。结果是该函数的替换
另一个例子是map
函数:
def map(f, lst):
result = []
for x in lst:
result.append(f(x))
return result
因此,使用函数f
调用map
。然后在lst
上迭代,对于每个元素x
,使用x
调用f
。结果将附加到列表中
因此,您不必传递带有参数的translate
来获取值,您可以传递函数,以便另一个函数可以使用几个(不同)值调用该函数。我假设您的意思是匹配的位置
:
def translate(match):
return worddict[match.group(0)]
起源于。Python支持函数式编程的概念,其中可以将函数作为参数传递
如果您这样调用re.sub
作为:
rc.sub(translate, txt)
translate
是一个函数。而rc.sub
所做的就是寻找匹配项每次匹配,都会使用生成的参数调用函数。结果是该函数的替换
另一个例子是map
函数:
def map(f, lst):
result = []
for x in lst:
result.append(f(x))
return result
因此,使用函数f
调用map
。然后在lst
上迭代,对于每个元素x
,使用x
调用f
。结果将附加到列表中
因此,您不必传递带有参数的translate
来获取值,您可以传递函数,以便另一个函数可以使用几个(不同)值调用该函数。我假设您的意思是匹配的位置
:
def translate(match):
return worddict[match.group(0)]
起源于。Python支持函数式编程的概念,其中可以将函数作为参数传递
如果您这样调用re.sub
作为:
rc.sub(translate, txt)
翻译