簡體   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