2009-07-29 6 views
2

Dies ist eine Art Neuling Frage, aber ich konnte keine Lösung finden. Ich lese eine Liste von Strings aus einer Datei und versuche, ein zufälliges 5-Element-Sample mit random.sample zu erhalten, aber die Ergebnisliste enthält nur Zeichen. Warum das? Wie kann ich eine Stichprobenliste von Strings bekommen?random.sample Rückgabe nur Zeichen anstelle von Strings

Das ist, was ich tue:

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

Diese Liste mit fünf Elementen Charakter gibt wie:

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

Wenn ich den random.sample Teil weglassen, und die Liste drucken, druckt es aus jede Zeile der Datei, was das erwartete Verhalten ist, und beweist, dass die Datei OK gelesen wird.

Antwort

3

Wenn die Namen alle auf separaten Linien sind, RY folgendes:

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

Wesentlichen falsch Sie gehen, weil Sie eine interable zu random.sample() übergeben müssen. Wenn Sie eine Zeichenfolge übergeben, wird sie wie eine Liste behandelt. Wenn Ihre Namen alle in einer Zeile stehen, müssen Sie split() verwenden, um sie auseinander zu ziehen und diese Liste an random.sample() weiterzuleiten.

+1

Vielen Dank. Nun lass diese Frage ins Unbekannte verblassen: D –