Python:在一个命令中搜索两个正则表达式

2024-09-30 10:40:38 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在一个findall命令中搜索两个正则表达式?我有一个丑陋的程序来完成这一点,但想学习一个更好的Python方法来做到这一点

在下面的示例中,我想标识具有以下两种类型之一的所有服务器(alarm1 side0&;报警1(1侧)或(问题2)

文件:

Server 1, side 0, Alarm 1
Server 1, side 1, Alarm 1
Server 1, Problem 2
Server 2, Alarm 2
Server 3, side 0, Alarm 1
Server 4, side 1, Alarm 1
Server 5, Alarm 3

预期产量:

Server 1, Alarm 1, Alarm 2
Server 2, Alarm 2

脚本:

#! /usr/bin/python
import re
import sys
import os

def main():
  server_alarm_list=[]
  with open('sample_data') as f:
    text=f.read()
    Alarm1_side0_tuple=re.findall(r'Server (\d+), side 0, Alarm 1', text)
    Alarm1_side1_tuple=re.findall(r'Server (\d+), side 1, Alarm 1', text)
    Alarm2_tuple=re.findall(r'Server (\d+), Problem 2', text)
    for i in Alarm1_side0_tuple:
      if i in Alarm1_side1_tuple:
        server_alarm_list.append(i)
     for i in Alarm2_tuple:
       if i in server_alarm_list:
         print "Server" + i + ", Alarm 1, Alarm 2"
       else:
         print "Server" + i + ", Alarm2"


if __name__ == '__main__':
    main()

Tags: textinimportreservermainsidelist

热门问题