我有一个 python 列表,我将在其中搜索并找到一个术语。一旦找到它,我需要在列表中向后查找并使用 =
查找第一个出现的位置,然后向前查找使用 ;
查找第一个出现的位置。
我尝试使用 while 循环,但它不起作用。
extract = [1,2,"3=","fd","dfdf","keyword","ssd","sdsd",";","dds"]
indices = [i for i,s in enumerate(extract) if 'keyword' in s]
for ind in indices:
ind_while_for = ind
ind_while_back = ind
if ('=' in extract[ind]) & (';' in extract[ind]):
print(extract[ind])
if (';' in extract[ind]) & ('=' not in extract[ind]):
while '=' in extract[ind_while_back-1]:
ind_while_back -= 1
print(' '.join(extract[ind_while_back:ind]))
所需结果:3= fd dfdf 关键字 ssd sdsd ;
最佳答案
查找关键字的位置:
kw = extract.index("keyword")
在原始列表的子列表中查找关键字位置之前包含 "="
的索引最大的元素:
eq = max(i for i,w in enumerate(extract[:kw])
if isinstance(w,str) and "=" in w)
在子列表中从前一个元素到末尾查找索引最小且包含";"
的元素:
semi = min(i for i,w in enumerate(extract[eq:], eq)
if isinstance(w,str) and ';' in w)
提取两个极端之间的子列表:
extract[eq:semi+1]
#['3=', 'fd', 'dfdf', 'keyword', 'ssd', 'sdsd', ';']
关于python - 在 python 列表中向后或向前循环以查找匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54860808/