【发布时间】:2019-07-18 12:55:29
【问题描述】:
我有一个 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 keyword ssd sdsd ;
【问题讨论】:
-
你肯定混淆了
&和and。你需要后者。 -
请注意,您不能迭代列表中的整数元素。你的 if 参数应该是: if '=' in str(extract[ind]) and ';'在 str(extract[ind]):
-
当您可以简单地跟踪
=的最后一次出现时,为什么要“向后循环”?找到关键字后,您可以继续操作,直到点击;,您将获得输出所需结果所需的所有信息。 -
如果
extract = ["=keyword;"],我们应该打印它吗? -
如果
extract = ['=', 'keyword', ';', '=', 'keyword', 'a;' ],我们应该打印两个?
标签: python python-3.x python-2.7 jupyter-notebook spyder