2016-07-15 12 views
-3

私はJIRAの企業インスタンスからデータを読み込むためにPythonスクリプトを使用しています。文字列として返される値があり、そこから1ビットの情報を抽出する方法を理解する必要があります。私が必要とするのは、'name = ....'です。その結果から数値が必要です。Python正規表現の抽出 'name = ....'

<class 'list'>: ['[email protected][id=30943,rapidViewId=10468,state=CLOSED,name=2016.2.4 - XXXXXXXXXX,startDate=2016-05-26T08:50:57.273-07:00,endDate=2016-06-08T20:59:00.000-07:00,completeDate=2016-06-09T07:34:41.899-07:00,sequence=30943]'] 

私はちょうどそれの2016年2月4日部分を必要としています。この数字は必ずしも同じではありません。

REでこれを行う方法はありますか?私は正規表現に慣れていないので、助けていただければ幸いです。

+1

* "私は正規表現を初めて使う人" * - https://docs.python.org/3/howto/regex.html – jonrsharpe

答えて

0

簡単な正規表現では、このトリックを行うことができます:name=([0-9.]+)

正規表現の主要部分は、任意の数字(0-9)または連続して期間(.)(+)を検索する([0-9.]+)あります。

、これを使用する:

import re 
pattern = re.compile('name=([0-9.]+)') 

string = '''<class 'list'>: ['[email protected][id=30943,rapidViewId=10468,state=CLOSED,name=2016.2.4 - XXXXXXXXXX,startDate=2016-05-26T08:50:57.273-07:00,endDate=2016-06-08T20:59:00.000-07:00,completeDate=2016-06-09T07:34:41.899-07:00,sequence=30943]']''' 

matches = pattern.search(string) 
# Only assign the value if a match is found 
name_value = '' if not matches else matches.group(1) 
+0

歯科医に自分のクラウンを着けたらやります。しかし、十分に簡単だと思われる。 – ThatGuyDogboy

+0

私のPythonファイルでこのコードを使用すると、エラーが表示されます。 'IndexError:そのようなグループはありません。 ' – ThatGuyDogboy

0

バージョン名を抽出するためにcapturing groupを使用します。

([0-9.]+)は、1つのまたは複数の数字やドットを一致キャプチャグループで、カッコ定義
>>> import re 
>>> s = '[email protected][id=30943,rapidViewId=10468,state=CLOSED,name=2016.2.4 - XXXXXXXXXX,startDate=2016-05-26T08:50:57.273-07:00,endDate=2016-06-08T20:59:00.000-07:00,completeDate=2016-06-09T07:34:41.899-07:00,sequence=30943]' 
>>> re.search(r"name=([0-9.]+)", s).group(1) 
'2016.2.4' 

をキャプチャグループ。

非正規表現のオプションは,=-によっていくつかのsplittingを伴うだろう:

>>> l = [item.split("=") for item in s.split(",")] 
>>> next(value[1] for value in l if value[0] == "name").split(" - ")[0] 
'2016.2.4' 

これは、もちろん、テストおよびエラー処理を必要とします。

+0

私の歯冠を歯科医に受けさせたらやります。しかし、十分に簡単だと思われる。 – ThatGuyDogboy

+0

これはシェルで正常に動作します。しかし、私がファイル内で似たようなものを使用すると、_noそのようなgroup_エラーが発生します。 – ThatGuyDogboy