总noob问题,但我试图修改别人的代码。
目前的行是:
while 'Normal Stage' not in text[i]:
我需要它像:
while ('Normal Stage', 'Stage Error') not in text[i]:
基本上检查两个不同的词 这是目前在Python 2.7
我尝试的事情产生了不同的错误:
while 'Normal Stage' not in text[i] or 'Error Stage' not in text[i]:
while text[i] not in ('Normal Stage', 'Error Stage'):
while ('Normal Stage', 'Error Stage') not in text[i]:
感谢任何帮助!
全循环代码:
i = 0
f = False
while ('Normal Error', 'Stage Error').isdisjoint(text[i]):
if 'Findings' in text[i]:
d['Findings'] = (text[i].split(':'))[1].strip()
f = True
elif f == True:
d['Findings'] += "\n" + text[i].strip()
i += 1
答案 0 :(得分:1)
您需要and
:
while 'Normal' not in text[i] and 'Error' not in text[i]:
因为必须满足两个条件,而不是。在De Morgan's laws之后,您还可以将其表达为:
while not ('Normal' in text[i] or 'Error' in text[i]):
e.g。如果在'Normal'
中找到'Error'
或text[i]
,则while
循环应该结束。
由于这是使用字符串,您还可以使用regular expression:
import re
while not re.match(r'(?:Normal|Error)', text[i]):
如果在'Normal'
中找到'Error'
或text[i]
,则正则表达式匹配。
在你的循环中,你永远不会测试i
是否小于项目总数;你也需要为它添加一个测试:
while i < len(text) and not ('Normal' in text[i] or 'Error' in text[i]):
答案 1 :(得分:1)
我认为这应该有效:
while ('Normal' not in text[i]) and ('Error' not in text[i]):
如果你想运行while循环,而这些单词都不在文本中,那么这应该有用。如果你想继续运行循环,如果其中一个单词不在文本中,你可以用和替换和。