我需要从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长度)。 –