我需要解析此输出:-

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

I want to get multiple values for a single id (first column).For "303" - I need enb,mme ip addresses, facing and state values, same way for other ids.

regex for one desired output :-

\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*


在此之后如何继续获取整个输出的期望值方面一无所知。

最佳答案

看起来您的正则表达式没问题,所以您只需要使用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)


返回值:


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

关于python - 使用正则表达式从输出中解析所需字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19246775/

10-09 08:39