是否有更简单的方法来检查re.sub()是否替换了python中的单词?

时间:2017-07-30 01:49:23

标签: python

我正在学习python的正则表达式。

我想检查文件中的单词是否被re.sub()函数替换。

import re

original_file=open('original_file_path','r')
replaced_file=open('replaced_file_path','w')

compiled_pattern=re.compile('target_pattern')

match_flag=False
for line in original_file:
    new_line=re.sub(compiled_pattern, 'new_pattern', line, flags=0)
    replaced_file.write(new_line)

    search_result=re.search(compiled_pattern, new_line)
    if search_result:
        match_flag=True

original_file.close()
replaced_file.close()

if match_flag:
    print("Some parts are replaced")

我上面的代码使用re.search(),但我担心它是多余的,因为re.sub和re.search独立扫描相同的'line'。  有没有更简单的方法来检查文件中的单词是否真的被替换?非常感谢你。

2 个答案:

答案 0 :(得分:1)

请参阅re.subn

  

re.subn(pattern, repl, string, count=0, flags=0)

     

执行与sub()相同的操作,但返回元组(new_string, number_of_subs_made)

例如:

>>> r = re.compile('a')
>>> s = 'aaaaa'
>>> (x,n) = re.subn(r, 'b', s)
>>> n
5
>>> x
'bbbbb'

答案 1 :(得分:1)

您可以将旧字符串与新字符串进行比较

if new_line != line:
  match_flag=True