我正在学习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'。 有没有更简单的方法来检查文件中的单词是否真的被替换?非常感谢你。
答案 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