下面是列表输出
[[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语句没有向self.pass_count +添加1)
我正在尝试的是,如果列表包含任何关键字"错误:","已存在"和"重复输入"。
它应该输入if循环并将1添加到self.pass_count
请帮我解决这个问题
按照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"
仍然无法正常工作
答案 0 :(得分:1)
self.error_check
是一个列表清单。
此测试if [s for s in self.error_check if sub in s]:
正在检查sub
是否为列表的元素。您的代码需要检查的是sub
是否是列表元素的子字符串。
将列表理解展开到一个循环中,并将临时print
语句放入其中以查看正在进行的操作。
答案 1 :(得分:1)
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
注意:is_valid
是一种类方法