줄에 특정 문자열이 포함된 경우 Python에서 파일을 인쇄하는 방법은 무엇입니까?

줄에 특정 문자열이 포함된 경우 Python에서 파일을 인쇄하는 방법은 무엇입니까?

파일 이름에 a가 포함된 경우 파일 이름을 인쇄하려고 합니다 **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)

위 코드에서는 해당 특정 문자열만 인쇄할 수 있습니다. 오류가 포함된 모든 항목을 인쇄하고 싶습니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사해요

답변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생성하세요 .ifbreak

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:

잘 작동합니다.

관련 정보