我正在尝试打印一个文件名,如果它包含一个**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:
也会同样有效。