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

问题描述 投票:0回答:2

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

这里是动态列表detail

csvCpReportContents =[
['[PLT] rand (DEBUG INFO NOT FOUND)','11', '15'],
['rand', '10', '11', '12'],
[],
['multiply_matrices()','23','45'] ]

这里是fun列表包含要搜索的功能名称:

fun=['multiply_matrices()','[PLT] rand','rand']

功能fun[2],即rand的预期输出

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

功能fun[1],即[PLT] rand的预期输出

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

[这是我为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])

但是我得到了错误的输出:

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

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

python regex string match
2个回答
0
投票

上面的输入是嵌套列表,因此您必须考虑2D索引,例如l = [[1,2,3,4],[2,5,7,9]]用于查找3个数字元素您必须使用l [0] [2]

的索引

0
投票

具有自定义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 lst


print(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']
© www.soinside.com 2019 - 2024. All rights reserved.