Maison >développement back-end >Tutoriel Python >Pourquoi ma fonction de recherche de chaîne renvoie-t-elle toujours True ?

Pourquoi ma fonction de recherche de chaîne renvoie-t-elle toujours True ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-14 12:09:12891parcourir

Why Does My String Search Function Always Return True?

Recherche de chaînes dans des fichiers texte

En cherchant à détecter la présence d'une chaîne particulière dans un fichier texte, vous êtes tombé sur un problème où le code renvoie True de manière inattendue quelle que soit l’existence de la chaîne. Examinons le code et corrigeons le problème :

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"

Le nom de la variable blabla suggère qu'il y a une chaîne que vous essayez de trouver, mais elle n'est pas définie dans le code. C'est probablement la source du problème où le code renvoie toujours True. Assurez-vous de définir blabla avec la chaîne appropriée que vous recherchez avant d'exécuter la fonction check().

Approche alternative utilisant la lecture de fichier :

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

Ceci La méthode lit l’intégralité du fichier en mémoire, permettant ainsi la recherche directe de la chaîne. Cependant, gardez à l'esprit que cette approche peut ne pas convenir aux fichiers volumineux en raison de limitations de mémoire.

Approche 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 permet de créer une mémoire- représentation mappée du fichier, créant efficacement un objet « de type chaîne » qui utilise le fichier sous-jacent sans lire l'intégralité du fichier en mémoire, réduisant ainsi l'utilisation de la mémoire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn