使用python,如何选择csv文件的随机行?
我需要从csv文件中随机选择一个单词,但我不知道如何启动它。所有单词都在一列中,但我想得到一个随机行,这样我就可以输出一个随机单词。有什么想法吗?你可以使用熊猫:使用python,如何选择csv文件的随机行?,python,csv,random,row,Python,Csv,Random,Row,我需要从csv文件中随机选择一个单词,但我不知道如何启动它。所有单词都在一列中,但我想得到一个随机行,这样我就可以输出一个随机单词。有什么想法吗?你可以使用熊猫: import pandas as pd csvfile = pd.read_csv('/your/file/path/here') print csvfile.sample() 由于您声明所有单词都在一列中,因此更容易解析文件。以下是我的解决方案: import random with open('random_word_from
import pandas as pd
csvfile = pd.read_csv('/your/file/path/here')
print csvfile.sample()
由于您声明所有单词都在一列中,因此更容易解析文件。以下是我的解决方案:
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()
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)
如果您希望以增量方式随机选择一行,而不知道将有多少行,则可以使用。这可能会比较慢,因为它会做出多个随机选择,直到用完所有行,但一次只需要内存中的一行:
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到行数范围内的随机整数。完成此操作后,只需在该行读取单词?如果文件太大,无法一次性全部读入内存,则可以使用。