如何在python中的另一个字符串中搜索2个或更多字符串?

时间:2015-05-05 20:19:44

标签: python python-2.7

我刚刚开始自学Python,我想搜索一大堆字符串中的几个关键字。我尝试使用嵌套的if语句,但它很笨重但不起作用。

有更简单的方法吗?顺便说一句,我的字符串数组称为tmp

for i in range(0, len(idList)):
     for j in range(0, len(tmp)):
          if "apples" in tmp[j]: 
              if "bananas" in tmp[j]: 
                  if "peaches" in tmp[j]:
                      if "pears" in tmp[j]:
                          *Do something*

2 个答案:

答案 0 :(得分:4)

您的代码相当于:

for i in range(0, len(idList)):
     for j in range(0, len(tmp)):
          if all(s in tmp[j] for s in ("apples", "bananas", "peaches", "pears")):
               *Do something*

这使它更短。 all()函数允许您检查多个条件,当所有条件都为真时,此函数的计算结果为true。

答案 1 :(得分:0)

根据您所写的内容,听起来您正试图在tmp列表中找到任何关键字,而不是在一个元素中找到每个 。如果是这样,那么您的代码应该是

for i in range(0, len(idList)):
    for j in range(0, len(tmp)):
        if "apples" in tmp[j]:
            *Do something*
        elif "bananas" in tmp[j]:
            *Do something*
        elif "peaches" in tmp[j]:
            *Do something*
        elif "pears" in tmp[j]:
            *Do something*

所以你会在每个条件中做一些事情(不同或相同)。 如果"苹果"在列表中的当前元素中,然后执行某些操作。 ,如果"香蕉"在元素中,然后做其他事情。

要缩短代码,请查看any

  

如果iterable的任何元素为true,则返回True。如果iterable为空,则返回False。相当于:

def any(iterable):
     for element in iterable:
         if element:
             return True
     return False

这会使您的代码与Simeon的示例相似,但会将all替换为any