使用正则表达式从输出中解析所需的字段

npa*_*tel 1 python

我需要解析这个输出: -

S1-link-id   eNB-IP-Address   MME-IP-Address    Facing  State
-------------------------------------------------------------------
303          141.1.1.2        191.1.1.2         eNodeB  Established
301          141.1.1.2        191.1.1.2         MME     Established
306          141.1.1.3        191.1.1.2         eNodeB  Established
304          141.1.1.3        191.1.1.2         MME     Established
309          141.1.1.4        191.1.1.2         eNodeB  Established
307          141.1.1.4        191.1.1.2         MME     Established

我想为单个id(第一列)获取多个值.对于"303" - 我需要enb,mme ip地址,面向和状态值,对于其他ID也是如此.

一个所需输出的正则表达式: -

\s*(?P<id>\d+)\s+(?P<enb_adr>\d+\.\d+\.\d+\.\d+)\s+(?P<mme_adr>\d+\.\d+\.\d+\.\d+)\s+(?P<facing>\w+)\s+(?P<state>\w+)\s*
Run Code Online (Sandbox Code Playgroud)

在此之后坚持如何继续以获得整个输出的期望值.

Ter*_*ryA 5

看起来你的正则表达式没问题,所以你需要做的就是使用re.findall():

import re
print re.findall(r'\s*(?P<id>\d+)\s+(?P<enb_adr>\d+\.\d+\.\d+\.\d+)\s+(?P<mme_adr>\d+\.\d+\.\d+\.\d+)\s+(?P<facing>\w+)\s+(?P<state>\w+)\s*', the_text_above)
Run Code Online (Sandbox Code Playgroud)

返回:

[('303','141.1.1.2','191.1.1.2','eNodeB','Established'),('301','141.1.1.2','191.1.1.2','MME','Established '),('306','141.1.1.3','191.1.1.2','eNodeB','已建立'),('304','141.1.1.3','191.1.1.2','MME', 'Established'),('309','141.1.1.4','191.1.1.2','eNodeB','Established'),('307','141.1.1.4','191.1.1.2','MME ','已建立')]