ファイル名に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
生成します。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:
うまくいきます。