2017-06-05 1 views
-1

J'ai un fichier txt avec des chaînes assignées les unes aux autres comme "sun-moon" et je veux obtenir la valeur assignée (peu importe laquelle) d'une chaîne particulière si il proviendrait d'entrée de l'utilisateur, et sinon créez une nouvelle paire pour le fichier et l'écrire à elle:Python 3: rechercher une chaîne spécifique dans un fichier

user_input = input() 

if user_input in open('base.txt').read(): 
    print(True) # it's just to be sure that everything really works 
else: 
    base_file = open('base.txt', 'a+') 
    base_file.write(user_input) 
    base_file.write('\n') 
    base_file.close() 
+0

Je ne suis pas sûr de comprendre. Vous avez un fichier avec des paires de clés comme un dictionnaire accepte le texte et vous voulez rechercher "soleil" et retourner "lune"? Si c'est correct, je considérerais utiliser le cornichon. – 16num

+0

Oui, c'est vrai. Je ne sais pas où aller pour l'accomplir. –

Répondre

0
import pickle 

myDictA = {'sun': 'moon'} 

with open('myFile.pkl', 'w') as file: 
    pickle.dump(myDict, file) 

with open('myFile.pkl', 'r') as file: 
    myDictB = pickle.load(file) 

print("myDictA:", myDictA) 
print("myDictB:", myDictB) 

vous pouvez également intégrer gzip dans le fichier de sauvegarde processus de chargement pour économiser l'espace disque si vous vouloir. Une autre option est d'utiliser cPickle qui devrait être écrit de la même manière et est dit être jusqu'à 1000 fois plus rapide.

0

Un petit ajout au code actuel.

user_input = input() 
flag=1 
with open('base.txt') as f: 
    data=f.read() 
    if user_input in data: 
    print(data) 
    flag=0 
if flag: 
    base_file = open('base.txt', 'a+') 
    base_file.write(user_input) 
    base_file.write('\n') 
    base_file.close()