如果Python中的一行包含特定字符串,如何打印文件?

如果Python中的一行包含特定字符串,如何打印文件?

我正在尝试打印一个文件名,如果它包含一个**Error***(这里, * 表示可以有任何内容,例如Rock_Error_addr, Error_salary, TinaError_addr(它的开头也可能有空格))。如果我使用正则表达式使用确切的字符串,我就可以打印。但对于如何在上述情况下使用它感到有点困惑。

with open ('input.txt', 'r') as i:
    for line in i:
        a = re.search ('Error_salary', line) #I also tried a=re.search ('\s+Error\w+', line)
        print (line)

从上面的代码中,我只能打印该特定字符串...我想打印任何包含 Error 的内容。任何帮助将不胜感激。谢谢

答案1

这是因为如果对字符串执行for循环,您将迭代字符串中的每个字符:

>>> glob.glob( '*.rpt' )
['test.rpt']
>>> for i in 'test.rpt':
...  print i
...
t
e
s
t
.
r
p
t

这似乎有效:

import glob
with open( 'output.txt', 'w' ) as w:
   for file in glob.glob( '*.rpt' ):
      with open( file, 'r' ) as r:
         w.writelines( r.readlines() )
    

答案2

只需修改一点代码,并在读入的行中检测到错误字符串后立即python创建if+ 。break

import re
with open('input.txt', 'r') as i:
    for line in i:
        if re.search(r'Error', line):
            print('input.txt')
            break

但这里不需要正则表达式,因为您只需要查找文字字符串错误。

if 'Error' in line:

也会同样有效。

相关内容