在列表中查找字符串,并在python中输入to if语句

在列表中查找字符串,并在python中输入to if语句,python,python-2.7,Python,Python 2.7,下面是输出列表 [[u'\x07\r\n', u'Error: command failed: Invalid IPspace name. The name n "yyy" is already in\r\n', u' use by a cluster node, Vserver, or is the name of the local cluster.\r\n', u'\r\n'], [u'\x07\r\n', u'Error: command failed: The Vse

下面是输出列表

[[u'\x07\r\n', u'Error: command failed: Invalid IPspace name. The name n 
"yyy" is already in\r\n', u'       use by a cluster node, Vserver, or is 
the name of the local cluster.\r\n', u'\r\n'], [u'\x07\r\n', u'Error: command 
failed: The Vserver name is already used by another Vserver. \r\n', u'\r\n'], 
[u'\x07\r\n', u'Error: command failed: duplicate entry\r\n', u'\r\n']]
代码如下:

    sub = "duplicate entry"
    if [s for s in self.error_check if sub in s]:
        self.pass_count += 1
    sub = "already exists"
    if [s for s in self.error_check if sub in s]:
        self.pass_count += 1
    sub = "Error:"
    if [s for s in self.error_check if sub in s]:
        self.pass_count += 1
在上述代码中,不工作(不输入if语句,该语句未将1添加到self.pass\u count+)

我尝试的是,若列表包含任何关键字“Error:”、“exists”和“duplicate entry”

它应该进入if循环,并将1添加到self.pass\u计数

请帮我做这个

按照BoarGules的建议尝试以下代码

    if [s for s in self.error_check if "duplicate entry" in s]:
        self.pass_count += 1
        print "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    if [s for s in self.error_check if "already exists" in s]:
        print "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        self.pass_count += 1
    if [s for s in self.error_check if "Error:" in s]:
        self.pass_count += 1
        print "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

仍然不工作。错误检查是一个列表

此测试
if[s for s in self.error\u check if sub in s]:
正在检查
sub
是否是列表中的一个元素。代码需要检查的是
sub
是否是列表元素的子字符串


将您对列表的理解放在一个循环中,并将临时的
print
语句放入循环中,以查看发生了什么

self.error\u check
是一个列表列表

def is_valid(self, sub):
    return any(s for ln in self.error_check for s in ln if sub in s)

if self.is_valid("duplicate entry"):
    self.pass_count += 1
if self.is_valid("already exists"):
    self.pass_count += 1
if self.is_valid("Error:"):
    self.pass_count += 1
此测试
if[s for s in self.error\u check if sub in s]:
正在检查
sub
是否是列表中的一个元素。代码需要检查的是
sub
是否是列表元素的子字符串

将您对列表的理解放在一个循环中,并将临时的
print
语句放入循环中,以查看发生了什么

def is_valid(self, sub):
    return any(s for ln in self.error_check for s in ln if sub in s)

if self.is_valid("duplicate entry"):
    self.pass_count += 1
if self.is_valid("already exists"):
    self.pass_count += 1
if self.is_valid("Error:"):
    self.pass_count += 1
注意:
是有效的
是类方法


注意:
是否有效
是否是一种课堂方法

你不工作是什么意思?你误用了列表理解,请尝试
任何
我没有建议。我建议您将列表理解放在循环中,并将
print
语句放在循环中,这样您就可以看到自己在做什么。您所做的只是将
print
语句添加到您已经知道不起作用的代码中。这不能解决任何问题。你不工作是什么意思?你误用了列表理解,试试
any
我没有建议。我建议您将列表理解放在循环中,并将
print
语句放在循环中,这样您就可以看到自己在做什么。您所做的只是将
print
语句添加到您已经知道不起作用的代码中。这不能解决任何问题。先生尝试了但没有工作,粘贴了有问题的代码。先生尝试了但没有工作,粘贴了有问题的代码