500MB のファイルを処理しています。re.searchを使用すると処理時間が増加しました。
私がテストした以下のケースを見つけてください。すべての場合において、ファイルを 1 行ずつ読み取り、if
条件を 1 つだけ使用しています。
ケース1:
prnt = re.compile(r"(?i)<spanlevel level='7'>")
if prnt.search(line):
print "Matched"
out_file.write(line)
else:
out_file.write(line)
ファイル全体を読み取るのに 16 秒かかりました。
ケース 2:
if re.search(r"(?i)<spanlevel level='7'>",line):
print "Matched"
out_file.write(line)
else:
out_file.write(line)
ファイルの読み取りに 25 秒かかりました。
ケース 3:
if "<spanlevel level='7'>" in line:
print "Matched"
out_file.write(line)
else:
out_file.write(line)
ファイルの読み取りにかかった時間はわずか 8 秒です。
3つのケースの違いを教えてください。Case3 は非常に高速に処理されていますが、大文字と小文字を区別しない一致を行うことができません。Case3 で大文字と小文字を区別しない一致を行う方法は?