当前位置:  开发笔记 > 编程语言 > 正文

如何检查re.sub()是否已在python中成功替换?

如何解决《如何检查re.sub()是否已在python中成功替换?》经验,为你挑选了2个好方法。

既然re.sub()返回整个修改/未修改的字符串,有没有办法检查是否re.sub()已经成功修改了文本,而没有搜索输出re.sub()



1> Praveen..:

你可以使用re.subn它执行与sub()相同的操作,但返回一个元组(new_string,number_of_subs_made)

如果修改次数0 是,则不修改字符串.

>>> re.subn('(xx)+', '', 'abcdab')
('abcdab', 0)
>>> re.subn('(ab)+', '', 'abcdab')
('cd', 2)
>>> 



2> Jon..:

如果您具有以下代码:

import re
s1 = "aaa"
result = re.sub("a", "b", s1)

您可以通过将result的ID与s1进行比较来检查对subsubsubsubstitutions的调用,如下所示:

id(s1) == id(result)

或者,这是相同的:

s1 is result

这是因为python中的字符串是不可变的,因此如果进行任何替换,结果将是与原始字符串不同的字符串(即:原始字符串不变)。使用id进行比较而不是字符串内容的优点是,比较是恒定时间而不是线性时间。


无法理解下降投票。我确认这可以正常工作。甚至记录在案:“如果找不到该模式,则字符串将保持不变”。嗯,它没有明确地说“同一对象”,所以它有时可能会中断,但是如果OP为避免比较而死机,则这是我们能提供的最好的方法。
好吧,在另一个答案中我不知道`subn`(因为我从来不需要它),那绝对是“一种明显的方式”。这个还是值得“二等奖”。
推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有