2016-05-08 103 views
1

该字符串的格式为'[DATE] record flag: X1.X2.X3.X4.YEAR.NUM;',其中DATA是日期字符串;有一个或两个空间:X1之间; X1,X2,X4一个或多个字符组成; X3 consisits of zero or more chars; YEARNUM分别是4位和3位如何从python中的格式化字符串中删除子字符串?

这里是一个〔实施例:s = '[2011-03-13] record flag: NW.SENSOR..MH1.2011.012;'

如何削减从s'NW''SENSOR'

回答

1

使用str.split

>>> s = '[2011-03-13] record flag: NW.SENSOR..MH1.2011.012;' 

>>> s.split(' ')[3].split('.') 
['NW', 'SENSOR', '', 'MH1', '2011', '012;'] 

>>> out = s.split(' ')[3].split('.') 

>>> out[0] 
'NW' 

>>> out[1] 
'SENSOR' 

使用re.search

>>> s = '[2011-03-13] record flag: NW.SENSOR..MH1.2011.012;' 

>>> out = re.search(r':\s+([^.]+)\.([^.]+)', s) 

>>> out.group(1) 
'NW' 

>>> out.group(2) 
'SENSOR' 
+0

peferct,我喜欢're'解决方案。但顺便说一句,为什么在模式前加上'r',因为如果没有它,表达式也会给出好的结果? – Lee

+0

@李不,“r”代表原始。它的存在使得Python将该字符串视为未加工的字符串,并将其传递给Regex,而无需进行任何内部操作。 – heemayl

1

使用一些分裂和剥离:

parts = s.split(":")[1].strip().split(".") 
parts[0] # Should be NW 
parts[1] # Should be SENSOR 
相关问题