如何检查列表中的所有字符串?

2024-04-25 13:14:46 发布

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

website = str(raw_input('Website: '))
palavras_chaves = ['joomla', 'Joomla']
palavras_chaves2 = ['wordpress', 'Wordpress', 'WordPress', 'wp']    
abrindo = urllib2.urlopen(website)
abrindo = abrindo.read()
if palavras_chaves[0] and palavras_chaves[1] in abrindo:
    print '\nÉ um joomla!'

elif palavras_chaves2[0] and palavras_chaves2[1] and palavras_chaves2[2] and palavras_chaves2[3] in abrindo:        
    print '\nÉ um wordpress!'

else:
    print '\nÉ um CMS desconhecido!'

我想知道如何在没有指定的情况下检查所有字符串。似乎很简单,但我尝试了一切我想到的,但没有工作。你知道吗


Tags: andininputrawwordpresswebsiteumprint
2条回答

正如@fourtheye所指出的,这里需要内置的^{}函数,您可以使用它和列表理解来完成下面描述的工作。你知道吗

所以试试这个:

if all(i in abrindo for i in palavras_chaves):
    print '\nÉ um joomla!'

elif all(i in abrindo for i in palavras_chaves2):
    print '\nÉ um wordpress!'
else:
    print '\nÉ um CMS desconhecido!'

编辑:

我想如果你手动操作,比如:

if palavras_chaves[0] and palavras_chaves[1] in abrindo:

它之所以起作用是因为palavras_chaves[1]abrindo中,但是palavras_chaves[0]可能不在abrindo中,但是当您使用all()时,^{>>中的所有字符串都有abrindo中,万一有一个字符串不在abrindo中,它就失败了!

看这个例子,您尝试这样做,您希望它返回'Works as expected',但是它返回相反的结果

>>> if 'Hey' and 'Bye' in 'Bye':
...     print 'Not expected right?'
... else:
...     print 'Works as expected'
...     
#Not expected right?

但是使用all()

if all(i in 'Bye'for i in ['Hey','Bye']):
    print 'Not expected right?'
else:
    print 'Works as expected'
#Works as expected

使用python的内置集,它有一个issubset方法。http://docs.python.org/2/library/stdtypes.html#set

相关问题 更多 >

    热门问题