[PYTHON] 파이썬에서 문자열에서 날짜 추출하기
PYTHON파이썬에서 문자열에서 날짜 추출하기
"원숭이 2010-07-10 사랑 바나나"와 같은 문자열에서 날짜를 추출하려면 어떻게해야합니까? 감사!
해결법
-
==============================
1.날짜가 고정 된 형식으로 주어지면 정규식을 사용하여 날짜를 추출하고 "datetime.datetime.strptime"을 사용하여 날짜를 구문 분석 할 수 있습니다.
날짜가 고정 된 형식으로 주어지면 정규식을 사용하여 날짜를 추출하고 "datetime.datetime.strptime"을 사용하여 날짜를 구문 분석 할 수 있습니다.
match = re.search(r'\d{4}-\d{2}-\d{2}', text) date = datetime.strptime(match.group(), '%Y-%m-%d').date()
그렇지 않으면 날짜가 임의의 형식으로 주어지면 쉽게 추출 할 수 없습니다.
-
==============================
2.python-dateutil 사용하기 :
python-dateutil 사용하기 :
In [1]: import dateutil.parser as dparser In [18]: dparser.parse("monkey 2010-07-10 love banana",fuzzy=True) Out[18]: datetime.datetime(2010, 7, 10, 0, 0)
날짜가 잘못되면 ValueError가 발생합니다.
In [19]: dparser.parse("monkey 2010-07-32 love banana",fuzzy=True) # ValueError: day is out of range for month
다양한 형식의 날짜를 인식 할 수 있습니다.
In [20]: dparser.parse("monkey 20/01/1980 love banana",fuzzy=True) Out[20]: datetime.datetime(1980, 1, 20, 0, 0)
날짜가 모호한 지 짐작할 수 있습니다.
In [23]: dparser.parse("monkey 10/01/1980 love banana",fuzzy=True) Out[23]: datetime.datetime(1980, 10, 1, 0, 0)
그러나 모호한 날짜를 구문 분석하는 방식은 사용자 정의 할 수 있습니다.
In [21]: dparser.parse("monkey 10/01/1980 love banana",fuzzy=True, dayfirst=True) Out[21]: datetime.datetime(1980, 1, 10, 0, 0)
-
==============================
3.파이썬에서 문자열로부터 날짜 추출하기. 사용할 수있는 가장 좋은 모듈은 datefinder 모듈입니다.
파이썬에서 문자열로부터 날짜 추출하기. 사용할 수있는 가장 좋은 모듈은 datefinder 모듈입니다.
아래에있는 쉬운 단계에 따라 Python 프로젝트에서 사용할 수 있습니다.
pip install datefinder
import datefinder input_string = "monkey 2010-07-10 love banana" # a generator will be returned by the datefinder module. I'm typecasting it to a list. Please read the note of caution provided at the bottom. matches = list(datefinder.find_dates(input_string)) if len(matches) > 0: # date returned will be a datetime.datetime object. here we are only using the first match. date = matches[0] print date else: print 'No dates found'
참고 : 많은 수의 경기를 예상하는 경우; 목록에 대한 타입 캐스팅은 큰 성능 오버 헤드가 발생하기 때문에 권장되는 방법이 아닙니다.
-
==============================
4.Pygrok를 사용하면 정규 표현식 구문에 대한 추상 확장을 정의 할 수 있습니다.
Pygrok를 사용하면 정규 표현식 구문에 대한 추상 확장을 정의 할 수 있습니다.
사용자 정의 패턴은 % {PATTERN_NAME} 형식으로 정규식에 포함될 수 있습니다.
콜론으로 분리하여 해당 패턴의 레이블을 만들 수도 있습니다 : % s {PATTERN_NAME : matched_string}. 패턴이 일치하면 값은 결과 사전의 일부로 반환됩니다 (예 : result.get ( 'matched_string')).
예 :
from pygrok import Grok input_string = 'monkey 2010-07-10 love banana' date_pattern = '%{YEAR:year}-%{MONTHNUM:month}-%{MONTHDAY:day}' grok = Grok(date_pattern) print(grok.match(input_string))
결과 값은 사전이됩니다.
{ '월': '07', '일': '10', '연도': '2010'}
date_pattern이 input_string에 없으면 반환 값은 None입니다. 반대로 패턴에 레이블이 없으면 빈 사전 {}이 반환됩니다.
참고 문헌 :
-
==============================
5.문자열 (예 : 로그 파일)에서 날짜 개체의 위치를 알고있는 경우 .split () [인덱스]를 사용하여 형식을 완전히 알지 못해도 날짜를 추출 할 수 있습니다.
문자열 (예 : 로그 파일)에서 날짜 개체의 위치를 알고있는 경우 .split () [인덱스]를 사용하여 형식을 완전히 알지 못해도 날짜를 추출 할 수 있습니다.
예 :
>>> string = 'monkey 2010-07-10 love banana' >>> date = string.split()[1] >>> date '2010-07-10'
from https://stackoverflow.com/questions/3276180/extracting-date-from-a-string-in-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 이미지에서 녹색 색상 객체 만 감지하는 임계 값을 정의하는 방법 : Opencv [duplicate] (0) | 2018.10.14 |
---|---|
[PYTHON] 이중 밑줄이있는 Python 메서드 이름이 재정의됩니까? (0) | 2018.10.14 |
[PYTHON] 파이썬 : NameError : 전역 이름 'foobar'가 정의되지 않았습니다. (0) | 2018.10.14 |
[PYTHON] 파이썬 3.3의 해시 함수는 세션간에 다른 결과를 반환합니다. (0) | 2018.10.14 |
[PYTHON] Python2.x에서 print () (함수 버전) 사용하기 (0) | 2018.10.14 |