2016-05-08 12 views
1

文字列の形式は'[DATE] record flag: X1.X2.X3.X4.YEAR.NUM;'です。DATAは日付文字列です。 :X1の間に1つまたは2つのスペースがあります。 X1,X2,X4は、の1つ以上の文字で構成される。。 X3は、の0個以上の文字を含む。; YEARおよびNUMは、それぞれ4および3桁のである。ここでPythonでフォーマットされた文字列から部分文字列を切り取る方法は?

はexmapleです:s = '[2011-03-13] record flag: NW.SENSOR..MH1.2011.012;'

私はsから'NW''SENSOR'をカットするにはどうすればよいですか?

答えて

1

str.splitを使用する:

re.searchを使用して
>>> 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' 

>>> 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'ソリューションが好きです。しかしbtw、式の前に 'r'を付ける理由は、式も良い結果をもたらすからです。 – Lee

+0

@Leeいいえ、 'r'は生の意味です。 Pythonがその文字列を生のままにして、Regexのように内部操作なしでそのまま渡すようにします。 – heemayl

1

いくつかの分割を使用し、ストリッピング:

parts = s.split(":")[1].strip().split(".") 
parts[0] # Should be NW 
parts[1] # Should be SENSOR 
関連する問題