首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何选择以某个字母开头的随机CSV行?

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

Stack Overflow用户
提问于 2019-04-10 08:10:35
回答 2查看 47关注 0票数 -1

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

例如,如果用户输入了字母'C',那么我希望python随机选择一个以'C‘开头的行,并返回第二列。这是可以做到的事情,还是非常复杂的事情?

EN

回答 2

Stack Overflow用户

发布于 2019-04-10 08:25:39

代码语言:javascript
复制
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

代码语言:javascript
复制
B   url1
M   url2
C   url3
C   url4
C   url5

并将url3/url4/url5作为输出,因为它是随机的

输出:

代码语言:javascript
复制
url3
票数 1
EN

Stack Overflow用户

发布于 2019-04-10 08:25:00

考虑到CSV相对较小,最好的方法是将CSV加载到dict中并使用random.choice(...)选择一个值返回给用户。

代码语言:javascript
复制
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]))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55602947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档