我有一个包含两列的CSV文件,第一列有一个字母代码(例如“ M”或“ B”),第二列有一个URL。值得注意的是,有许多行具有相同的代码。我遇到的问题是选择一个随机行,该行以用户输入的字母开头。
因此,例如,如果用户输入了字母“ C”,那么我希望python选择一个以“ C”开头的随机行并返回第二列。这是可以做到的事情,还是令人难以置信的复杂事情?
答案 0 :(得分:1)
import easygui
import csv
import random
path = easygui.fileopenbox()
#print(path)
f = open(path, 'rU')
reader = csv.reader(f,dialect='excel', delimiter='\t')
count=0
list1=[]
list2=[]
for row in reader:
if(row[0]=='C'):
list2.append(row)
chosen_row = random.choice(list(list2))
print(chosen_row[1])
如果只有第一列等于C,则可以使用此代码选择日志文件并打印第二列。我使用了一个csv文件,该文件包含以下数据。
输入:trial.csv
B url1
M url2
C url3
C url4
C url5
并且随机输出url3 / url4 / url5作为输出
输出:
url3
答案 1 :(得分:0)
鉴于CSV相对较小,最好将CSV加载到dict
中,然后使用random.choice(...)
选择要返回给用户的值。
import random
codes = {} # key: code, value: list of urls
# Load CSV into `codes`
with open("something.csv", "r") as f:
for line in f:
code, url = line.split(",")
if code not in codes:
codes[code] = []
codes[code].append(url)
# Handle user input
input_code = input("Code: ")
print(random.choice(codes[input_code]))