我正在做一个练习,需要从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']
请向我建议如何搜索确切的单词并仅获取该信息。
上面的输入是嵌套列表,因此您必须考虑2D索引,例如l = [[1,2,3,4],[2,5,7,9]]用于查找3个数字元素您必须使用l [0] [2]
的索引具有自定义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']