random.sample nur Zeichen zurückgeben statt Strings
-
05-07-2019 - |
Frage
Dies ist eine Art von Neuling Frage, aber ich konnte keine Lösung finden. Ich las eine Liste von Zeichenfolgen aus einer Datei, und versuchen, eine zufällige, 5 Element Probe mit random.sample zu bekommen, aber die resultung Liste enthält nur Zeichen. Warum ist das so? Wie kann ich eine zufällige Stichprobe Liste von Strings bekommen?
Das ist, was ich tue:
names = random.sample( open('names.txt').read(), 5 )
print names
Dies ergibt eine Fünf-Elemente-Zeichenliste wie:
['\x91', 'h', 'l', 'n', 's']
Wenn ich den random.sample Teil weglassen, und die Liste drucken, druckt es jede Zeile der Datei aus, die das erwartete Verhalten ist, und beweist, dass die Datei OK gelesen wird.
Lösung
Wenn die Namen sind alle auf separaten Linien, ry wie folgt vor:
names = random.sample(open('names.txt').readlines(), count)
print names
Im Wesentlichen werden Sie falsch, weil Sie eine interable random.sample()
übergeben müssen. Wenn Sie eine Zeichenfolge übergeben es behandelt sie wie eine Liste. Wenn Sie Namen sind alle auf einer Linie, müssen Sie split()
verwenden, um sie auseinander zu ziehen und diese Liste übergeben random.sample()
.