Pergunta

Este é um tipo de pergunta novato, mas eu não poderia encontrar uma solução. Eu li uma lista de strings de um arquivo, e tentar obter uma amostra de 5 elemento aleatório com random.sample, mas a lista resultung contém apenas caracteres. Por que é que? Como posso obter uma lista amostra aleatória de cordas?

Isto é o que eu faço:

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

Isto dá uma lista de caracteres de cinco elementos como:

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

Se eu omitir a parte random.sample, e imprimir a lista, ela imprime cada linha do arquivo, que é o comportamento esperado, e prova que o arquivo é lido OK.

Foi útil?

Solução

Se os nomes são todos em linhas separadas, ry o seguinte:

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

Essencialmente você está indo mal porque você precisa passar um interable para random.sample(). Quando você passar uma string que trata como uma lista. Se você é nomes estão todos em uma linha, você precisa usar split() para separá-los e passar essa lista para random.sample().

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top