link = 'http://dedegood.com'
wrongdomain = ['google','facebook','twitter']
if any(link.find(i) for i in wrongdomain):
print 'pass this url'
else:
print 'good'
我想检查link
是否包含wrongdomain
中的字词
为什么总是打印'pass this url'
?
link
没有google或facebook或twitter
我试着像link.find('google')
一样分开
它会返回-1。那么问题是什么?
请帮我检查一下我的逻辑。谢谢你
答案 0 :(得分:2)
bool(-1)
是True
。您可以这样做,而不是找到:
if any(domain in link for domain in wrongdomain):
请记住,它也会与网址的其余部分匹配,而不仅仅是域名。
答案 1 :(得分:0)
您的方法无法像http://dedegood.com/google
这样的网址正常工作。所以你可以使用像
link = 'http://dedegood.com'
wrongdomain = ['google','facebook','twitter']
a=link.split("//")
b=a[1].split(".")
if any(domain in b[0] for domain in wrongdomain):
print ('pass this url')
else:
print ('good')
由于您只想查看网址,因此您可以使用此网址。它不是检查所有链接,而是仅检查网站名称。因此,如果http://dedegood.com/google
之类的任何网址都不会成为问题。
答案 2 :(得分:0)
您想知道网址域是否在错误的域名中吗?我建议你可以这样做以获得更好的表现:
import urlparse
import tldextract
link = 'http://dedegood.com'
wrongdomain = ['google','facebook','twitter']
parsed = tldextract.extract(link)
if parsed.domain in wrongdomain:
print 'pass this url'
else:
print 'good'
您可以查看tldextract,这是一个旨在从网址获取域名的库。