ホームページ >バックエンド開発 >Python チュートリアル >テキスト ファイル内の Python 文字列検索で常に True が返されるのはなぜですか?

テキスト ファイル内の Python 文字列検索で常に True が返されるのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-22 02:14:21824ブラウズ

Why Does My Python String Search in a Text File Always Return True?

テキスト ファイル内の文字列の検索

問題:
ファイル内に特定の文字列が存在するかどうかを判断しようとしています特定の関数を使用するテキスト ファイルは、文字列の内容に関係なく常に 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。