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

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-04 07:03:09303ブラウズ

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

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

プログラムは、テキスト ファイル内に特定の文字列が存在するかどうかを確認しようとして、予期せぬ動作に遭遇する。この問題を修正するには、誤った結果の背後にある根本的な理由を理解することが重要です。

元のコード:

def check():
    datafile = file('example.txt')
    found = False
    for line in datafile:
        if blabla in line:
            found = True
            break

check()
if True:
    print "true"
else:
    print "false"

誤った結果の理由:

提供されたコードは、ファイル内に文字列が存在するかどうかに関係なく、一貫して True を返します。次のブロックの「if True」は、前のループのロジックに関連付けられていません。

if True:
    print "true"
else:
    print "false"

Open を使用した Python:

テキスト ファイルでは、「with」ステートメントを「open()」関数と組み合わせて使用​​します。このメソッドは、ファイルのクローズを自動的に処理する「ファイルのような」オブジェクトを作成します。

with open('example.txt') as f:
    if 'blabla' in f.read():
        print("true")

メモリ マッピングの使用:

テキスト ファイルを操作するためのもう 1 つのテクニックはメモリです。マッピング。このアプローチでは、ファイル全体が文字列のようなオブジェクトとしてメモリに読み込まれ、より高速なアクセスと正規表現の使用が可能になります。

import mmap

with open('example.txt', 'rb', 0) as file, \
     mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ) as s:
    if s.find(b'blabla') != -1:
        print('true')

これらの提案に従うことで、テキスト ファイル内の文字列を正確に検索し、期待通りの結果が得られます。

以上がPython テキスト ファイルの文字列検索で常に True が返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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