python检查列表项是否在字符串中

时间:2015-01-27 05:58:52

标签: python

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。那么问题是什么?

请帮我检查一下我的逻辑。谢谢你

3 个答案:

答案 0 :(得分:2)

Python中的{p> 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,这是一个旨在从网址获取域名的库。