2017-07-30 39 views
0

我正在學習python的正則表達式。是否有更簡單的方法來檢查re.sub()是否替換了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掃描相同的「線」獨立。 有沒有更簡單的方法來檢查文件中的文字是否真的被替換?非常感謝你。

回答

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

你可以比較舊與新的字符串

if new_line != line: 
    match_flag=True 
相關問題