ホームページ >バックエンド開発 >Python チュートリアル >文字列検索関数が常に True を返すのはなぜですか?

文字列検索関数が常に True を返すのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-14 12:09:12845ブラウズ

Why Does My String Search Function Always Return True?

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

テキスト ファイル内の特定の文字列の存在を検出しようとして、文字列の存在に関係なく、コードが予期せず 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"

変数名 blabla は、検索しようとしている文字列があることを示唆していますが、それがコード内で定義されていません。これが、コードが常に True を返す問題の原因である可能性があります。 check() 関数を実行する前に、検索している適切な文字列を使用して blabla を定義していることを確認してください。

ファイル読み取りを使用した代替アプローチ:

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

これメソッドはファイル全体をメモリに読み込み、文字列の直接検索を可能にします。ただし、このアプローチはメモリ制限のため、大きなファイルには適さない可能性があることに注意してください。

mmap アプローチ:

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')

mmap を使用するとメモリを作成できます。ファイルのマップされた表現により、ファイル全体をメモリに読み込まずに基礎となるファイルを使用する「文字列のような」オブジェクトが効果的に作成され、メモリ使用量が削減されます。

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

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