2016-07-15 3 views
-3

저는 Python 스크립트를 사용하여 JIRA의 기업 인스턴스에서 데이터를 읽습니다. 문자열로 반환되는 값이 있고 거기에서 정보 비트를 추출하는 방법을 알아야합니다. 내가 필요한 것은 '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

파이썬 파일에서이 코드를 사용할 때 오류가 발생합니다. 'IndexError : 해당 그룹이 없습니다. ' – ThatGuyDogboy

0

이 버전 이름 추출하는 capturing group를 사용 ([0-9.]+) 하나 개 이상의 숫자 또는 도트 일치 캡처 그룹은

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