テキスト ファイル内の文字列の検索
問題:
ファイル内に特定の文字列が存在するかどうかを判断しようとしています特定の関数を使用するテキスト ファイルは、文字列の内容に関係なく常に True を返します。 present.
コード:
def check(): datafile = file('example.txt') found = False for line in datafile: if blabla in line: found = True break
診断と解決策:
提供されたコードは、テキスト ファイルを検索し、行ごとにチェックして特定の文字列「blabla」の存在を見つけます。ただし、問題は、ブラブラが並んでいる場合の状態にあります。 Python では、メンバーシップをチェックします。つまり、文字列が行のどこかにある場合に True を返します。
この問題を軽減するには、さまざまなアプローチを検討できます。
オプション 1:ファイル内容の直接文字列検索
with open('example.txt') as f: if 'blabla' in f.read(): print("true")
このアプローチでは、ファイルの内容全体を文字列に読み取り、ストリングの存在。ファイルが大きすぎない場合、多くの場合、この方法の方が各行を反復処理するよりも高速で便利です。
オプション 2: メモリ マッピングを使用した効率的なファイル アクセス
import mmap with open('example.txt') as f: s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) if s.find('blabla') != -1: print('true')
このアプローチでは、Python のメモリ マッピング技術を利用して、基礎となるファイルを直接操作する「文字列のような」オブジェクトを作成し、完全にアクセスしなくても効率的なアクセスを可能にします。ファイルをメモリにロードします。
オプション 3: 正規表現を使用した大文字と小文字を区別しない検索
if re.search(br'(?i)blabla', s): print('true')
このアプローチでは、正規表現を使用して、ファイル内で大文字と小文字を区別しない検索を実行します。メモリマップされたファイル。構文 (?i)blabla を使用すると、検索で大文字と小文字の違いが無視されます。
以上がテキスト ファイル内の Python 文字列検索で常に True が返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。