我需要從csv文件中選擇一個隨機單詞,我只是不知道如何開始它。所有的單詞都在一列中,但我想要得到一個隨機行,以便輸出一個隨機單詞。有什麼想法嗎?使用python,你如何選擇一個csv文件的隨機行?
-2
A
回答
2
你可以使用熊貓:
import pandas as pd
csvfile = pd.read_csv('/your/file/path/here')
print csvfile.sample()
0
既然你說,所有的話都在一列,這使得它更容易解析該文件。這裏是我的解決方案:
import random
with open('random_word_from_file.txt') as f:
words = f.read().split()
my_pick = random.choice(words)
print my_pick
注
- 在這個解決方案,我認爲該文件的大小在內存
- 我用
f.read().split()
代替f.readlines()
因爲以後不會刪除新的合理配合線字符脫字 - 一旦有了一個單詞列表,就叫
random.choice()
隨機挑一個
2
如果您csv
文件足夠小,以適應到內存中,你可以閱讀整個事情,然後選擇線路:
import csv
import random
with open(filename) as f:
reader = csv.reader(f)
chosen_row = random.choice(list(reader))
你必須在整個文件在讀取一次,因爲choice
需要知道如何有很多行。
如果你感到快樂製出一個以上傳過來的數據,你可以指望的行,然後選擇一個隨機行和文件中再次達到該行寫着:
with open(filename) as f:
lines = sum(1 for line in f)
line_number = random.randrange(lines)
with open(filename) as f:
reader = csv.reader(f)
chosen_row = next(row for row_number, row in enumerate(reader)
if row_number == line_number)
如果你想增量和隨機選擇一行,但不知道有多少行,您可以使用reservoir sampling。這可能會比較慢,因爲它會進行多個隨機選擇,直到它耗盡行,但一次只需要一行內存:
with open(filename) as f:
reader = csv.reader(f)
for index, row in enumerate(reader):
if index == 0:
chosen_row = row
else:
r = random.randint(0, index)
if r == 0:
chosen_row = row
+1
很好的方法來計算文件中的行數。 –
相關問題
- 1. Java隨機選擇csv文件中的行用於輸出
- 2. 如何使用NHibernate的ICriteria API選擇一個隨機行?
- 3. 如何使用python選擇CSV文件中的每第N行
- 4. 隨機選擇一個文件
- 5. 在Java中,你如何隨機選擇一個字母(a-z)?
- 6. 如何隨機選擇一個SKSpriteNode?
- 7. 如何從目錄中隨機選擇一個文件?
- 8. 如何從一組隨機數中進行隨機選擇?
- 9. 如何從python中的一個文件中讀取隨機行?
- 10. 從Python中的前一個選擇中隨機選擇
- 11. 在CSV文件中的每一行附加一個隨機數python
- 12. 選擇隨機行
- 13. 如何使用純SQL選擇N個隨機行?
- 14. 如何讓Python選擇一個隨機單詞
- 15. 隨機寫Python數據到CSV文件
- 16. 你會如何從結構中隨機選擇一條路徑?
- 17. 如何從文本文件中選擇一條隨機線
- 18. 從文件系統中隨機選擇一個文件
- 19. 在Python中單行選擇一個隨機單詞?
- 20. 顯示隨機選擇(Python)
- 21. Python列表隨機選擇
- 22. 從CSV中爲特定列隨機選擇一行
- 23. 在文本文件中隨機選擇一行c#streamreader
- 24. MySQL的 - 如何隨機選擇1行中的一個大的重複的一組,使得每行有選擇
- 25. 從SQL選擇隨機行使用PHP
- 26. 如何從文件夾列表中選擇一個隨機文件夾?
- 27. 在Python中隨機選擇條件
- 28. Python在Python中隨機選擇多個選擇
- 29. 選擇一個隨機文件,並與node.js的
- 30. 批量選擇隨機文本文件
使用[**'random' **]( https://docs.python.org/2/library/random.html)和[**'csv' **](https://docs.python.org/2/library/csv.html)模塊。 –
我會統計行數。從這個隨機整數可以在1到行數的範圍內生成。 完成此操作後,只需在該行讀取關閉的單詞? – CodeCupboard
如果文件太大而無法一次讀入內存,則可以使用[resevoir sampling](http://stackoverflow.com/questions/9690009/pick-n-items-at-random-from-sequence-of -Unknown長度)。 –