Случайный.Choice() возвращает всю строку целиком

#python #random

#python #Случайный

Вопрос:

Я пытаюсь написать программу, которая запрашивает документ word и случайным образом возвращает строку из этого документа. В настоящее время возвращается каждая строка из документа, даже когда я применяю random.choice(). Есть мысли о том, как я могу это исправить?

Я запустил len () в своем списке и подтвердил, что он возвращает несколько переменных, но весь список все еще возвращается.


  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:

Вы добавляете весь список строк к вашему dictionary_list в каждом цикле, поэтому, какой бы из его элементов вы ни выбрали, это весь список…

Вы можете сделать:

 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)
  

В качестве дополнительного примечания, for line in file_object выполняет итерацию по строкам файла, вам не нужно использовать readlines first и повторять итерацию по списку строк.

Комментарии:

1. Спасибо! Я подозревал, что могу это делать, но не был уверен, как это остановить. Ваш вывод действительно устранил проблему. Я замечаю, что ваш вывод тоже проще, чем я думаю. Я постараюсь не забывать следить за более простыми вариантами.

2. Добро пожаловать! 🙂 Обратите внимание, что когда вы почувствуете, что ответ решает вашу проблему, вы можете принять его, нажав на галочку слева.

Ответ №2:

Вы хотите

      dictionary_list.extend(lines)
  

чтобы «не вложить» lines в ваш dictionary_list.