如何比较两个列表并确定它们是否有公共字符串元素?

2024-10-01 02:34:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有域列表:

domains_1 = ['google.com', 'payments-amazon.com']
domains_2 = ['https://static-eu.payments-amazon.com/OffAmazonPayments/de/lpa/js/Widgets.js']

在这种情况下,payments-amazon.com是公共域。考虑到域名可以是长的和唯一的,我该如何找到它呢

我已经试过了,但这只在域名准确的情况下有效。如果它们在列表/字符串中包含部分域,我需要它们匹配:

matches = (set(domains_1).intersection(domains_2))
print(matches)

Tags: httpscomamazon列表googlejs情况static
1条回答
网友
1楼 · 发布于 2024-10-01 02:34:59

您可以使用像tldextract这样的软件包-除了在AWS lambda设置中,它工作得非常好。或者您可以使用类似的方法从URL获取域

def extract_domain(url):
    from urllib.parse import urlparse
    parsed_domain = urlparse(url)
    domain = parsed_domain.netloc or parsed_domain.path # Just in case, for urls without scheme
    domain_parts = domain.split('.')
    if len(domain_parts) > 2:
        return '.'.join(domain_parts[-(2 if domain_parts[-1] in {
            'com', 'net', 'org', 'io', 'ly', 'me', 'sh', 'fm', 'us'} else 3):])
    return domain

for x in domains_2:
    dom = extract_domain(x)
    if dom in domains_1:
        do your thing

相关问题 更多 >