random.sample возвращает только символы вместо строк - PullRequest
2 голосов
/ 29 июля 2009

Это своего рода вопрос новичка, но я не смог найти решение. Я читаю список строк из файла и пытаюсь получить случайную 5-элементную выборку с помощью random.sample, но список результатов содержит только символы. Это почему? Как я могу получить случайный образец списка строк?

Вот что я делаю:

    names = random.sample( open('names.txt').read(), 5 )
    print names

Это дает список из пяти элементов, например:

['\x91', 'h', 'l', 'n', 's']

Если я опускаю часть random.sample и распечатываю список, он распечатывает каждую строку файла, что является ожидаемым поведением, и подтверждает, что файл читается нормально.

1 Ответ

3 голосов
/ 29 июля 2009

Если все имена в отдельных строках, попробуйте следующее:

names = random.sample(open('names.txt').readlines(), count)
print names

По сути, вы идете не так, потому что вам нужно передать целое число в random.sample(). Когда вы передаете строку, она обрабатывает ее как список. Если все имена в одной строке, вам нужно использовать split(), чтобы разделить их и передать этот список random.sample().

...