繁体   English   中英

读取csv并在Python中随机打印行和列的最佳方法?

[英]Best way to read a csv and randomly print a row and column in Python?

我正在尝试创建一个术语和定义程序。 我有一个csv,其中有两列,术语和定义。 我正在尝试读取文件,然后在csv中随机选择一行并打印定义,然后需要输入响应才能猜出该术语。

到目前为止,我已经找到了如何读取文件的方法,但是我仍然坚持如何随机选择一行,然后询问该行的column2,然后等待并检查第1列的响应。

到目前为止,我所拥有的是:

re = open('Psycstudy.csv') 
spreadsheet = csv.DictReader(re)

这将其放入字典中,但是现在我不确定如何随机选择定义和术语。 感谢您的任何帮助。

您可以使用random模块选择随机行。

给定一个文件definitions.csv

term1,def1
term2,def2
term3,def3
term4,def4
term5,def5

使用以下代码获取所需的内容。

import csv
import random

data = [r for r in csv.reader(open('definitions.csv'))]
test = random.choice(data)

print(test)
# ['term3', 'def3']

这样,您可以使用test[0]test[1]来获取术语和定义。 如果要使用字典来执行此操作,则可以改用字典理解。

data = {r[0]: r[1] for r in csv.reader(open('definitions.csv'))}
term = random.choice(list(data.keys()))

print(term, data[term])
# term2 def2

或者,如果您确实要使用csv.DictReader()函数,也可以使用该函数,前提是文件中包含标头。 我为最后一个示例添加了标题。

data = csv.DictReader(open('definitions.csv'))
term = random.choice([i for i in data])

print(term)
# {'term': 'term1', ' definition': 'def1'}

出于好奇,我决定花点时间处理5,000个定义。 如果您有很多术语,我会考虑使用理解途径。

List Comprehension: 100 loops, best of 3:  3.08 ms per loop
Dict Comprehension: 100 loops, best of 3:  3.60 ms per loop
Dict Reader:        100 loops, best of 3: 13.50 ms per loop

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM