Domanda

Questa è una specie di domanda da principiante, ma non sono riuscito a trovare una soluzione. Ho letto un elenco di stringhe da un file e provo a ottenere un campione casuale di 5 elementi con random.sample, ma l'elenco dei risultati contiene solo caratteri. Perché? Come posso ottenere un elenco casuale di stringhe?

Questo è quello che faccio:

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

Questo dà un elenco di caratteri di cinque elementi come:

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

Se ometto la parte random.sample e stampo l'elenco, stampa tutte le righe del file, che è il comportamento previsto, e dimostra che il file è letto OK.

È stato utile?

Soluzione

Se i nomi sono tutti su righe separate, provare quanto segue:

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

In sostanza stai sbagliando perché devi passare un interable a random.sample () . Quando passi una stringa, la tratta come una lista. Se i tuoi nomi sono tutti su una riga, devi utilizzare split () per separarli e passare l'elenco a random.sample () .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top