从<;之间的列表中删除元素;br/>;标签-PYTHON

从<;之间的列表中删除元素;br/>;标签-PYTHON,python,list,split,Python,List,Split,我正在抓取一个站点,结果在一个ID下格式化。输出随结果中的中断次数而变化。我建立了一个模式,可以提取公司名称、地址、城市/州和电话号码 我最初的目标是删除其中包含“SUITE”的任何元素,但有些地址的“SUITE”与实际地址位于同一条通道中,因此放弃了该模式。是否有办法检查字符串“SUITE”之前是否有任何值,如果没有,请将其删除 for r in list(result_list): if '<br/>' in r: result_list.remove(r

我正在抓取一个站点,结果在一个ID下格式化。输出随结果中的中断次数而变化。我建立了一个模式,可以提取公司名称、地址、城市/州和电话号码

我最初的目标是删除其中包含“SUITE”的任何元素,但有些地址的“SUITE”与实际地址位于同一条通道中,因此放弃了该模式。是否有办法检查字符串“SUITE”之前是否有任何值,如果没有,请将其删除

for r in list(result_list):
    if '<br/>' in r:
        result_list.remove(r)
    else:
        if 'dba' in r:
            result_list.remove(r)
        else:
            if 'SUITE' in r:
                result_list.remove(r)
            else:
                clean_list.append(r)
列表中r的
(结果列表):
如果r中的“
”: 结果列表。删除(r) 其他: 如果r中的“dba”: 结果列表。删除(r) 其他: 如果r中的“套件”: 结果列表。删除(r) 其他: 清除列表。追加(r)
例1:

1066915 #<- License
BROOKFIELD SOCAL LAND CONSTRUCTORS LLC #<- Business Name (index 0)
<br/>
12265 EL CAMINO REAL #<- Address (index 1)
<br/>
SUITE 180 #<- NOT NEEDED
<br/>
SAN DIEGO, CA 92130 #<- City/State (index 2)
<br/>
Business Phone Number:(714) 427-6868 #<- Phone (index 3)
<br/>
<br/>

1066915#在回答问题之前,让我介绍一种更优雅的方式,使用以下语句编写原始条件语句,而不是使用嵌套语句:

但是,您确实不应该修改正在迭代的列表。因为列表迭代器是按索引工作的,所以每次执行时实际上都会无意中跳过元素。好消息是您根本不需要修改
结果列表
:您所关心的只是
清理列表
中的结果。此外,您不需要将某些内容放入列表中,即可使用以下内容对其进行迭代:


在迭代时修改
result\u list
,这始终是个坏主意。当你不这样做的时候,你的问题会神奇地消失吗?我不确定我能理解。我以前听说过它的坏习惯,但我不熟悉如何修改列表的另一种方法times@usr2564301. 问题与此无关,但建议仍然很好。@sguice10。您是否知道
elif
。更好的是,
?我提到这一点是因为我注意到你有一个不选择答案的习惯。选择一个答案会将您的问题从未回答的队列中移除,并为帮助您的人(以及您自己)提供一些声誉积分。
1066919
J G CONST CORP #<- company name (index 0) or every 4th element
<br/>
dba J G CONSTRUCTION CORP #<- removed
<br/>
<br/>
449 W FOOTHILL BLVD SUITE #276 #< -Address would be removed with current
<br/>
GLENDORA, CA 91741 #<- City/State (index 2)
<br/>
Business Phone Number:(626) 460-1014 #<- Phone (index 3)
<br/>
<br/>
if '<br/>' in r:
    result_list.remove(r)
elif 'dba' in r:
    result_list.remove(r)
elif 'SUITE' in r:
    result_list.remove(r)
else:
    clean_list.append(r)
if '<br/>' in r or 'dba' in r or 'SUITE' in r:
    result_list.remove(r)
else:
    clean_list.append(r)
for r in result_list:
    if not ('<br/>' in r or 'dba' in r or 'SUITE' in r):
        clean_list.append(r)
for r in result_list:
    index = r.find('SUITE')
    if index == 0 or (index > 0 and r[index - 1].isspace()):
        addr = r[:index].rstrip()
        if addr:
            clean_list.append(addr)
    elif not ('<br/>' in r or 'dba' in r):
        clean_list.append(r)