如何选择以某个字母开头的随机CSV行?

时间:2019-04-10 00:10:35

标签: python csv

我有一个包含两列的CSV文件,第一列有一个字母代码(例如“ M”或“ B”),第二列有一个URL。值得注意的是,有许多行具有相同的代码。我遇到的问题是选择一个随机行,该行以用户输入的字母开头。

因此,例如,如果用户输入了字母“ C”,那么我希望python选择一个以“ C”开头的随机行并返回第二列。这是可以做到的事情,还是令人难以置信的复杂事情?

2 个答案:

答案 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]))