如何解决如何将方法应用于捕获re.sub中的组
我想使用re.sub()
替换字符串的一部分,但是我找不到将方法应用于捕获组的方法。我的代码如下所示(请记住,这只是为了复制,而不是我的实际问题):
import re
mystring = 'Hello NICE to meet you'
mystring = re.sub('(Hello )(NICE)( to meet you)',r'\1' + r'\2'.lower() + r'\3',mystring)
print(mystring)
>>> Hello NICE to meet you
在上面的示例中,lower()
不影响r'\2'
,有什么方法可以使此re.sub
返回“你好,很高兴认识你”
解决方法
如果您只想大写句子,则可以使用str.capitalize
:
"hello NICE to meet you".capitalize()
>>> 'Hello nice to meet you'
如果您想要的更多,并动态地使用匹配的正则表达式的值:
re.sub
函数接受一个处理程序作为匹配的正则表达式的替换值。处理程序应收到一个re.Match
类型的参数。
这是一个小写单词的示例:
import re
def handler(match):
return match.group(1).lower()
re.sub('([A-Za-z]+)',handler,mystring)
,
您可以使用函数代替字符串代替。它以match对象作为参数,并应返回替换的字符串,如the documentation for re.sub中所述:
import re
def replace(match):
return match.group(1) + match.group(2).lower() + match.group(3)
mystring = 'Hello NICE to meet you'
mystring = re.sub('(Hello )(NICE)( to meet you)',replace,mystring)
print(mystring)
# Hello nice to meet you
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。