搜索列表数组并检查其中一个值是否不存在



我正在使用BeautifulSoup提取所有标签为= mailto的标签。我正在自己的网站上运行。我唯一的问题是说我已经提到了两次电子邮件。我只希望它将其存储到数组中。使用商店,我还在存储URL的路径。现在保持简单,然后将其简化为"/".

我需要一种方法来浏览每个元素,找到" URL"并检查值。如果不存在,请将其添加到数组中。

这是我得到的,但这不是正确的。

def remove_duplicates(arr):
    final_list = []
    for page, data in enumerate(arr):
        if not final_list:
            final_list.append({'page': '/', 'url': data["url"]})
        print(final_list)

pageData = urllib.request.urlopen('<anysite>').read()
soup = BeautifulSoup(pageData, 'html.parser')
initialData = []
data = []
for i in soup.find_all("a", href=lambda href: href and "mailto" in href):
    initialData.append({'page': '/', 'url': i.text})

remove_duplicates(initialData)

如果我遇到的问题是我两次提到了我的电子邮件。我只希望它将其存储到数组中。然后,我建议您列出列表,然后返回列表。通过这样做,您可以消除重复的数据。

k = ['hello','world','hello']
set(k)
{'hello', 'world'}
list(set(k))
['hello', 'world']

并检查列表中是否存在一个值,您可以使用not in关键字。

样本:

ls = [{'google': 'www.google.com'},{'facebuk': 'www.facebuk.com'},{ 'sample': 'www.sample.com'}, { 'sample': 'www.sample.com'}]

现在您可以执行此删除重复项。

>>> [dict(t) for t in {tuple(d.items()) for d in ls}]
[{'google': 'www.google.com'}, {'sample': 'www.sample.com'}, {'facebuk': 'www.facebuk.com'}]

希望它有帮助。

最新更新