gpt4 book ai didi

带有正则表达式的 Python lambda

转载 作者:太空狗 更新时间:2023-10-29 22:27:32 38 4
gpt4 key购买 nike

对于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)

最佳答案

您可以使用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'

关于带有正则表达式的 Python lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10454359/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com