Python:如何检查列表中的一个项是否在elif语句中包含一个字符串,其中必须满足两个条件?
我正在用python制作一个刮板,它执行一个搜索,然后打开搜索中的每个链接,并在一个强标记中列出所有内容 然后将列表附加到数据集。并不是所有的页面都是相同的,所以我根据有多少个强标记以及在某些情况下某个特定标记是否包含一个或多个单词来组织它们。我需要满足这两个条件,以便强标记的内容进入右列 代码可以工作,但体积很大,我正在努力编写干净的代码Python:如何检查列表中的一个项是否在elif语句中包含一个字符串,其中必须满足两个条件?,python,string,pandas,list,append,Python,String,Pandas,List,Append,我正在用python制作一个刮板,它执行一个搜索,然后打开搜索中的每个链接,并在一个强标记中列出所有内容 然后将列表附加到数据集。并不是所有的页面都是相同的,所以我根据有多少个强标记以及在某些情况下某个特定标记是否包含一个或多个单词来组织它们。我需要满足这两个条件,以便强标记的内容进入右列 代码可以工作,但体积很大,我正在努力编写干净的代码 for a in addr: driver.get(a) print(a) WebDriverWa
for a in addr:
driver.get(a)
print(a)
WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.ID, "_errorElement_")))
html = driver.page_source
soup = BeautifulSoup(html, "html.parser")
columns = ['Business Name', 'Control Number', 'Business Type', 'Business Status', 'NAICS Code', 'NAICS Sub Code',
'Principal Office Address', 'Date of Formation/ Registration Date', 'State of Formation/ Jurisdiction',
'Last Registration Year', 'Dissolved Date', 'Registered Agent', 'Registered Agent Address', 'County']
df = pd.DataFrame(columns=columns)
strong = []
for strong_tag in soup.find_all('strong'):
strong.append(str(strong_tag.text))
if len(strong) == 14:
values = [strong[0], strong[1], strong[2], strong[3], strong[4], strong[5], strong[6], strong[7], strong[8],
strong[9], strong[10], strong[11], strong[12], strong[13]]
elif len(strong) == 6:
values = [strong[0], '', '', 'Name Reservation', '', '', strong[3], strong[1], '', '', '', strong[2], '', '']
elif len(strong) == 13 and "Active" in str(strong[3]):
values = [strong[0], strong[1], strong[2], strong[3], strong[4], strong[5], strong[6], strong[7], strong[8],
strong[9], '', strong[10], strong[11],strong[12]]
#the above code appears to be correct for 13 length active compliance Domestic LLC( and possibly active owes current year)
以下5条elif语句是我试图结合的内容。我不知道如何检查列表中的项目是否包含这5个单词中的任何一个,同时还要检查列表的长度
elif len(strong) == 13 and "Admin" in str(strong[3]):
values = [strong[0], strong[1], strong[2], strong[3], strong[4], '', strong[5], strong[6], strong[7], strong[8],
strong[9], strong[10], strong[11], strong[12]]
elif len(strong) == 13 and "Abandoned" in str(strong[3]):
values = [strong[0], strong[1], strong[2], strong[3], strong[4], '', strong[5], strong[6], strong[7], strong[8],
strong[9], strong[10], strong[11], strong[12]]
elif len(strong) == 13 and "Withdrawn" in str(strong[3]):
values = [strong[0], strong[1], strong[2], strong[3], strong[4], '', strong[5], strong[6], strong[7], strong[8],
strong[9], strong[10], strong[11], strong[12]]
elif len(strong) == 13 and "Dissolved" in str(strong[3]):
values = [strong[0], strong[1], strong[2], strong[3], strong[4], '', strong[5], strong[6], strong[7], strong[8],
strong[9], strong[10], strong[11], strong[12]]
elif len(strong) == 13 and "Terminated" in str(strong[3]):
values = [strong[0], strong[1], strong[2], strong[3], strong[4], '', strong[5], strong[6], strong[7], strong[8],
strong[9], strong[10], strong[11], strong[12]]
elif len(strong) == 12:
values = [strong[0], strong[1], strong[2], strong[3], strong[4], '', strong[5], strong[6], strong[7], strong[8],
'', strong[9], strong[10], strong[11]]
else:
values = [strong[0], '', '', '', '', '', '', '', '', '', '', '', '', '']
print("WARNING! New values length...")
df = df.append(pd.Series(values, index=columns), ignore_index=True)
df2 = df2.append(df)
driver.close()
driver.switch_to.window(driver.window_handles[0])
内部检查是多余的,我建议您在外部添加长度条件,当该条件完成时,内部满足以下要求,例如:
if len(strong) == 13:
# All the flow comming here has a list of length 13
if "Dissolved" in strong[3]:
# Do whatever
pass
elif ...:
...
elif len(strong) == 12:
...
这样更容易理解。只需在中使用
,另一方面,您要检查strong[3]
是否在
数组中['Admin','dependend',…]
:
l = ['Admin', 'Abandoned', 'Withdrawn', 'Dissolved', 'Terminated']
if len(strong) == 13 and strong[3] in l:
values = strong[:5] + [''] + strong[5:]
elif len(strong) == 12:
values = strong[:5] + [''] + strong[5:9] + [''] + strong[9:]
else:
values = [strong[0]] + ['']*12
另外,您还可以在分配给
值时组合元素,以使其更简洁我不使用DataFrame,因此我无能为力。然而,代码第二部分中的条件len(strong)==13
被不必要地重复多次。如果len(strong)==13,则使用一次,
并在其下使用其他条件条件,例如:如果str(strong[3])中的“溶解”:
<代码>如果在str中“终止”(strong[3]):
。。。。。。我还注意到源代码第二部分中的变量值
是相同的(在len(strong)==13的条件下)。在测试条件开始时,您可以使用这些值填充临时变量,例如values\u tmp
,然后将此临时values\u tmp
分配给所需变量:values=values\u tmp
。源代码会更干净,但会多慢一行,这总是在测试开始时完成(即使不满足任何条件)。这很有效!谢谢你关于组合元素的提示。