我是Python的初学者,所以我对代码优化有疑问。我希望你能就此提出建议。 我正在解决下一个任务: 一行中有一个关键字的文本及其状态可能不同,例如:
... task1 .... success....
... task1 .... failed...
... task1 .... inactive...
我必须使用关键字跟踪此状态(我们还有不同的任务)。
我的代码:
list_of_tasks = ['task1','task2','task3']
list_of_states = ['success','inactive','failed']
for task in list_of_tasks:
regex='|'.join(('.*'+task+'.*'+state+'.*') for state in list_of_states)
pattern = re.compile (regex)
for line in text:
m = re.match(pattern,str(line))
if m:
#operational logic
这个正则表达式能否以更有效的方式完成? 提前谢谢。
答案 0 :(得分:1)
您也可以轮换任务,因此最终的正则表达式看起来像
(task1|task2|task3).*(success|inactive|failed)
因此您拥有一个正则表达式,并且您可以通过m.group(1)
获取任务名称,通过m.group(2)
获取状态,但更重要的是 - 如果您的文件实际上只是表格中的一堆行
TASK STATUS
使用正则表达式是完全冗余的,您可以简单地将字符串拆分为白色字符并检索TASK和STATUS。只有在看起来像
时,正则表达才有用so I did research on TASK statistics 123 $ time 30s process& STATUS leads to a conclusion that blah