python - 在 python 列表中向后或向前循环以查找匹配项

标签 python python-3.x python-2.7 jupyter-notebook spyder

我有一个 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/

相关文章:

python - Python 3.1 中的整数问题

python - 无法连接不同计算机上的 Python 套接字

路由中的 Python3 Flask asyncio 子进程挂起

python - PyQt QWebPage linkClicked 信号可以检测使用了哪个鼠标按钮

Python-Twilio 不发送带有测试凭据的短信。

python - 从磁盘获取sqlite3数据库,将其加载到内存,然后将其保存到磁盘?

python - pyqt QTableView 删除行导致异常 : Qt attempts to create header for removed row

python - 列表中所有对的乘积之和

python - 安装python包时出现"There was a problem confirming the ssl certificate"

python - 从一个页面重定向到另一个页面以及 Flask 中的一些 POST 数据