J'essaie d'écrire un programme qui interroge un document Word et renvoie une ligne au hasard à partir de ce document. Actuellement, chaque ligne du document est renvoyée, même lorsque j'applique random.choice (). Avez-vous des idées sur la façon de corriger cela?

J'ai exécuté un len () sur ma liste et confirmé qu'il renvoie plusieurs variables, mais la liste entière est toujours renvoyée.


 import random

 filename = 'happy document.txt'
 dictionary_list = []

 with open(filename) as file_object:
 lines = file_object.readlines()
   for l in lines: 
     lines = [l.strip('\n') for l in lines]
     dictionary_list.append(lines)

random_choice = random.choice(dictionary_list)
print(random_choice)
-1
bookydedreamer 9 mars 2019 à 00:32

2 réponses

Meilleure réponse

Vous ajoutez la liste complète des lignes à votre dictionary_list sur chaque boucle, donc quel que soit l'élément que vous choisissez, c'est toute la liste ...

Tu peux faire:

import random

filename = 'happy document.txt'
with open(filename) as file_object:
    lines = [line.strip('\n') for line in file_object]

random_choice = random.choice(lines)
print(random_choice)

En remarque, for line in file_object itère sur les lignes du fichier, vous n'avez pas besoin d'utiliser readlines d'abord et de réitérer sur la liste des lignes.

0
Thierry Lathuille 8 mars 2019 à 21:38

Tu veux

     dictionary_list.extend(lines)

Pour "désimbriquer" le lines dans votre dictionnaire_liste.

0
AKX 8 mars 2019 à 21:36