クイックスタート¶
ja-timex
で文字列を解析する¶
ja-timex
からTimexParser
クラスをインポートして、日付や時間が含まれている文字列を解析します。
from ja_timex import TimexParser
timex_parser = TimexParser()
timexes = timex_parser.parse("彼は2008年4月から週に3回ジョギングを1時間行ってきた")
解析結果はList[TIMEX]
で得られます。
In []: timexes
Out[]:
[<TIMEX3 tid="t0" type="DATE" value="2008-04-XX" text="2008年4月">,
<TIMEX3 tid="t1" type="SET" value="P1W" freq="3X" text="週に3回">,
<TIMEX3 tid="t2" type="DURATION" value="PT1H" text="1時間">]
TIMEX
を利用する¶
各要素のTIMEX
クラスは、TIMEX3の仕様に従って規格化された時間情報表現のdataclassです。
In []: timex = timexes[0]
# <TIMEX3 tid="t0" type="DATE" value="2008-04-XX" text="2008年4月">
In []: timex.type
Out[]: 'DATE'
In []: timex.value
Out[]: '2008-04-XX'
In []: timex.text
Out[]: '2008年4月'
In []: timex = timexes[1]
# <TIMEX3 tid="t1" type="SET" value="P1W" freq="3X" text="週に3回">
In []: timex.value
Out[]: 'P1W'
In []: timex.freq
Out[]: '3X'
In []: timex.text
Out[]: '週に3回'
仕様の詳細はTIMEX3タグの仕様を参照ください。
Pythonのdatetimeに変換する¶
日付表現は、TIMEX
クラスからPythonのdatetimeオブジェクトに変換することができます。
In []: timex = timexes[0]
# <TIMEX3 tid="t0" type="DATE" value="2008-04-XX" text="2008年4月">
In []: timex.to_datetime()
Out[]: DateTime(2008, 4, 1, 0, 0, 0, tzinfo=Timezone('Asia/Tokyo'))
Pythonのtimedeltaに変換する¶
持続時間表現は、TIMEX
クラスからPythonのtimedeltaオブジェクトに変換することができます。
In []: timex = timexes[2]
# <TIMEX3 tid="t2" type="DURATION" value="PT1H" text="1時間">
In []: timex.to_duration()
Out[]: Duration(hours=1)
通常のdatetime/timedeltaと同様に、計算が可能です。
In []: from datetime import datetime
In []: datetime(2021, 7, 18, 12, 30) - timex.to_duration()
Out[]: datetime.datetime(2021, 7, 18, 11, 30)