Как я могу взять случайные строки из файла .txt

Я только начал программировать с помощью python 2.7, и у меня возникли проблемы с моим генератором случайных чисел для получения элементов из внешнего файла .txt, интересно, может ли кто-нибудь мне немного помочь...

По сути, я хотел бы взять 100 случайных совпадений, подсчитать их все в конце и распечатать сводку для строк. Я надеюсь, что это имеет смысл!

Я знаю, что на этот вопрос уже был дан ответ, но ответы мне не помогли.

Итак, мой текстовый файл содержит набор строк, разделенных запятыми. Вот как выглядит мой код:

import random

fname = raw_input("Enter filename: ")
infile = open(fname,'r')
data = infile.readlines()

for i in range(100):
   print(random.uniform("Car_types.txt"))

Заранее спасибо за помощь!


person Odani87    schedule 08.04.2016    source источник


Ответы (3)


Я просто использовал текстовый файл для проверки своего кода. Тестовый файл выглядит так (не уверен, что ваш файл имеет тот же формат, что и мой).

import random
def addElements(l):
    for i in l:
        global result
        result.append(i)
fname=raw_input("Enter filename: ")
result=[]
summary=[]
for line in open(fname,'r'):
    elements=line.strip().split(',')
    addElements(elements)
for i in range(100):
    summary.append(random.choice(result))
print summary
  1. тест.txt:

азбука, определение, ги

jkl, mno, pqr

  1. Полученные результаты:

['mno', 'ghi', 'pqr', 'jkl', 'abc', 'abc', 'jkl', 'jkl', 'jkl', 'def', 'pqr', 'def', ' jkl", "pqr", "mno", "jkl", "mno", "def", "jkl", "jkl", "def", "mno", "pqr", "pqr", "abc" , 'pqr', 'def', 'abc', 'pqr', 'def', 'jkl', 'pqr', 'mno', 'mno', 'mno', 'def', 'jkl', ' def', 'ghi', 'jkl', 'pqr', 'mno', 'ghi', 'mno', 'mno', 'jkl', 'jkl', 'ghi', 'abc', 'ghi' , 'ghi', 'jkl', 'mno', 'def', 'ghi', 'ghi', 'abc', 'abc', 'pqr', 'ghi', 'abc', 'abc', ' mno', 'def', 'jkl', 'mno', 'mno', 'jkl', 'jkl', 'pqr', 'pqr', 'pqr', 'jkl', 'def', 'jkl' , 'mno', 'mno', 'ghi', 'jkl', 'mno', 'ghi', 'pqr', 'abc', 'ghi', 'def', 'ghi', 'ghi', ' jkl», «def», «abc», «abc», «ghi», «jkl», «pqr», «pqr», «pqr», «def», «pqr», «pqr», «def» ]

Надеюсь, что это помогает вам.

Если он по-прежнему печатает для вас ерунду, пожалуйста, предоставьте мне, как выглядит ваш текстовый файл. Спасибо!

person Michael Gao    schedule 08.04.2016

Вероятно, это то, что вы ищете:

import random

fname = raw_input("Enter filename: ")
# With statements are better as they explicitly close the file
with open(fname,'r') as infile:
    data = infile.read().split(",")  # Split the strings with commas as you said

for i in range(100):
   print(random.choice(data))  # This will randomly choose one of the strings
person Bharel    schedule 08.04.2016
comment
Привет Бхарел! Спасибо за ваш совет, но на выходе я получаю ерунду. Вот что я получаю: Введите имя файла: Car_types.txt. . Икс . т . C p t C y t t t r e r t . т у т п - person Odani87; 08.04.2016
comment
@Одани, я не совсем понимаю, как это возможно - person Bharel; 08.04.2016

Если вы не хотите потенциально получать одинаковые значения, возьмите образец после разделения данных запятыми:

fname = raw_input("Enter filename: ")
with  open(fname) as f:
    for r in random.sample(f.read().split(), 100):
        print(r)

Вы открываете файл, вызываете строки чтения, а затем вообще никогда не используете содержимое, random.uniform("Car_types.txt")) действует на литеральную строку "Car_types.txt", вам нужно использовать фактическое содержимое файла.

person Padraic Cunningham    schedule 08.04.2016
comment
Это работает, но я до сих пор не могу понять, как я могу получить обобщенный вывод - каждая строка подсчитана. - person Odani87; 12.04.2016