python - Python:在同一遍中计算和替换正则表达式?
问题描述
我可以用 全局替换正则表达式re.sub()
,并且可以用
for match in re.finditer(): count++
有没有办法将这两者结合起来,这样我就可以在不通过源字符串两次的情况下计算我的替换?
注意:我对替换是否匹配不感兴趣,我对同一调用中匹配的确切计数感兴趣,避免一次调用计数和一次调用替换。
解决方案
您可以使用re.subn
.
re.subn(pattern, repl, string, count=0, flags=0)
它返回(new_string, number_of_subs_made)
出于示例目的,我使用的示例与 @Shubham Sharma 使用的示例相同。
text = "Jack 10, Lana 11, Tom 12, Arthur, Mark"
out_str,count=re.subn(r"(\d+)", repl='replacement', string=text)
#out_str-->'Jack replacement, Lana replacement, Tom replacement, Arthur, Mark'
#count---> 3
推荐阅读
- jboss - IBM MQ JCA 资源适配器的日志记录
- reactjs - 如何在 Typescript 中使用 react-pdf 库
- android - proguard android上这个警告的-dontwarn规则是什么?
- java - 是否缓存了“预授权”注释的结果?
- go - 在Golang中将二进制值作为字符串转换为uint32
- mongodb - 在外部数组中查找与 ObjectID 匹配的文档
- excel-formula - 使用 OpenOffice 将 3 行内容连接、合并或合并为 1 行
- html - Div 内的 Div - 位于顶部
- python - 我正在尝试使用 .setId 在 QButtonGroup 中设置一个值,但出现类型错误
- swift - Tableview:选择名称,将ID(不是名称)存储在变量中的最佳方式?