带有regex的Python lambda

2024-09-30 01:20:44 发布

您现在位置:Python中文网/ 问答频道 /正文

当对python使用re的re.sub()部分时,如果我没有弄错的话,可以将函数用于sub。据我所知,它与传递的任何函数匹配,例如:

r = re.compile(r'([A-Za-z]')
r.sub(function,string)

有没有比用lambda调用方法更聪明的方法让它传入第二个参数?

r.sub(lambda x: function(x,arg),string)

Tags: 方法lambda函数re参数stringargfunction
1条回答
网友
1楼 · 发布于 2024-09-30 01:20:44

您可以使用functools.partial

>>> from functools import partial
>>> def foo(x, y):
...     print x+y
... 
>>> partial(foo, y=3)
<functools.partial object at 0xb7209f54>
>>> f = partial(foo, y=3)
>>> f(2)
5

在您的示例中:

def function(x, y):
     pass # ...
r.sub(functools.partial(function, y=arg),string)

以及正则表达式的实际用法:

>>> s = "the quick brown fox jumps over the lazy dog"
>>> def capitalize_long(match, length):
...     word = match.group(0)
...     return word.capitalize() if len(word) > length else word
... 
>>> r = re.compile('\w+')
>>> r.sub(partial(capitalize_long, length=3), s)
'the Quick Brown fox Jumps Over the Lazy dog'

相关问题 更多 >

    热门问题