在列表中查找字符串,并在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
语句添加到您已经知道不起作用的代码中。这不能解决任何问题。先生尝试了但没有工作,粘贴了有问题的代码。先生尝试了但没有工作,粘贴了有问题的代码