我需要解析此输出:-
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/