在列表中搜索确切的字符串

我正在做一个练习,我需要从列表中搜索确切的函数名称fun并从另一个列表中获取相应的信息detail。


这是动态列表detail:


csvCpReportContents =[

['[PLT] rand (DEBUG INFO NOT FOUND)', '11', '15'],

['rand', '10', '11', '12'],

['__random_r', '23', '45'],

['__random', '10', '11', '12'],

[],

['multiply_matrices()','23','45'] ]

这是fun包含要搜索的函数名称的列表:


fun = ['multiply_matrices()','__random_r','__random']

函数的预期输出fun[2]


 ['__random', '10', '11', '12']

函数的预期输出fun[1]


['__random_r', '23', '45'],

这是我尝试过的fun[2]:


for i in range(0, len(csvCpReportContents)):

    row = csvCpReportContents[i]

    if len(row)!=0:

        search1 = re.search("\\b" + str(fun[2]).strip() + "\\b", str(row))

        if search1:

            print(csvCpReportContents[i])

请向我建议如何搜索确切的单词并仅获取该信息。


小唯快跑啊
浏览 153回答 4
4回答

富国沪深

对于每个有趣的函数,您只需遍历 csv 列表,检查第一个元素是否以它开头csvCpReportContents = [    ['[PLT] rand (DEBUG INFO NOT FOUND)', '11', '15'],    ['rand', '10', '11', '12'],    [],    ['multiply_matrices()', '23', '45']]fun=['multiply_matrices()','[PLT] rand','rand']for f in fun:    for c in csvCpReportContents:        if len(c) and c[0].startswith(f):            print(f'fun function {f} is in csv row {c}')输出fun function multiply_matrices() is in csv row ['multiply_matrices()', '23', '45']fun function [PLT] rand is in csv row ['[PLT] rand (DEBUG INFO NOT FOUND)', '11', '15']fun function rand is in csv row ['rand', '10', '11', '12']更新了代码,因为您更改了问题中的测试用例和要求。我的第一个答案是基于您想要匹配以 item from fun 开头的行的测试用例。现在您似乎已经更改了该要求以匹配完全匹配,如果不完全匹配匹配,则以匹配开头。下面的代码已更新以处理该场景。但是我会说下次你的问题要清楚,不要在几个人回答后改变标准csvCpReportContents =[['[PLT] rand (DEBUG INFO NOT FOUND)', '11', '15'],['rand', '10', '11', '12'],['__random_r', '23', '45'],['__random', '10', '11', '12'],[],['multiply_matrices()','23','45'] ]fun = ['multiply_matrices()','__random_r','__random','asd']for f in fun:    result = []    for c in csvCpReportContents:        if len(c):            if f == c[0]:                result = c            elif not result and c[0].startswith(f):                result = c    if result:        print(f'fun function {f} is in csv row {result}')    else:        print(f'fun function {f} is not vound in csv')输出fun function multiply_matrices() is in csv row ['multiply_matrices()', '23', '45']fun function __random_r is in csv row ['__random_r', '23', '45']fun function __random is in csv row ['__random', '10', '11', '12']fun function asd is not vound in csv

有只小跳蛙

具有自定义search_by_func_name功能:csvCpReportContents = [    ['[PLT] rand (DEBUG INFO NOT FOUND)', '11', '15'],    ['rand', '10', '11', '12'],    [],    ['multiply_matrices()', '23', '45']]fun = ['multiply_matrices()', '[PLT] rand', 'rand']def search_by_func_name(name, content_list):    for lst in content_list:        if any(i.startswith(name) for i in lst):            return lstprint(search_by_func_name(fun[1], csvCpReportContents))  # ['[PLT] rand (DEBUG INFO NOT FOUND)', '11', '15']print(search_by_func_name(fun[2], csvCpReportContents))  # ['rand', '10', '11', '12']

青春有我

上面的输入是嵌套列表,所以你必须考虑二维索引,例如 l = [[1,2,3,4],[2,5,7,9]] 来查找你必须使用的索引的 3 个数字元素l[0][2]

慕慕森

您也可以像我在下面的代码中那样使用 call_fun 函数。def call_fun(fun_name):    for ind,i in enumerate(csvCpReportContents):        if i:            if i[0].startswith(fun_name):                return csvCpReportContents[ind]# call_fun(fun[2])# ['rand', '10', '11', '12']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python