0

我是 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

这个正则表达式可以以更有效的方式完成吗?先感谢您。

4

1 回答 1

1

您还可以交替执行任务,因此您的最终正则表达式看起来像

(task1|task2|task3).*(success|inactive|failed)

所以你有一个正则表达式,你可以通过 获取任务名称m.group(1)和状态m.group(2),但更重要的是 - 如果你的文件实际上只是一堆形式的行

TASK STATUS

使用正则表达式是完全多余的,您可以简单地将字符串拆分为白色字符并检索任务和状态。正则表达式只有在看起来像的时候才有用

so I did research on TASK statistics 123 $ time 30s process& STATUS leads to a conclusion that blah
于 2013-10-22T06:07:17.200 回答