random.sampleは、文字列ではなく文字のみを返します
-
05-07-2019 - |
質問
これは一種の初心者の質問ですが、解決策が見つかりませんでした。ファイルから文字列のリストを読み取り、random.sampleでランダムな5要素のサンプルを取得しようとしましたが、結果のリストには文字のみが含まれています。何故ですか?文字列のランダムサンプルリストを取得するにはどうすればよいですか?
これは私がしていることです:
names = random.sample( open('names.txt').read(), 5 )
print names
これにより、次のような5要素の文字リストが表示されます。
['\x91', 'h', 'l', 'n', 's']
random.sample部分を省略してリストを印刷すると、ファイルのすべての行が印刷されます。これは予想される動作であり、ファイルが正常に読み取られたことを証明します。
解決
名前がすべて別々の行にある場合は、次を試します:
names = random.sample(open('names.txt').readlines(), count)
print names
interableを random.sample()
に渡す必要があるため、本質的に間違っています。文字列を渡すと、それはリストのように扱われます。名前がすべて1行である場合は、 split()
を使用して名前を分解し、そのリストを random.sample()
に渡す必要があります。
所属していません StackOverflow