XSを解析する:持続時間データ型Python datetime.timedeltaオブジェクトに
質問
タイトルに従って、私はを含むXMLファイルを解析しようとしています xs:duration
データ・タイプ。それをPythonに変換したいのですが timedelta
オブジェクト。その後、さらに計算で使用できます。
と同様に、これを行う組み込みの方法はありますか strptime()
働き?そうでない場合、これを達成するための最良の方法は何ですか?
解決
質問で尋ねたことの実用的な例がすでにあるので、完全にここに投稿します。より良い答えが出てくるなら、私は受け入れます。
period = '-P14D'
regex = re.compile('(?P<sign>-?)P(?:(?P<years>\d+)Y)?(?:(?P<months>\d+)M)?(?:(?P<days>\d+)D)?(?:T(?:(?P<hours>\d+)H)?(?:(?P<minutes>\d+)M)?(?:(?P<seconds>\d+)S)?)?')
# Fetch the match groups with default value of 0 (not None)
duration = regex.match(period).groupdict(0)
# Create the timedelta object from extracted groups
delta = timedelta(days=int(duration['days']) + (int(duration['months']) * 30) + (int(duration['years']) * 365),
hours=int(duration['hours']),
minutes=int(duration['minutes']),
seconds=int(duration['seconds']))
if duration['sign'] == "-":
delta *= -1
これは機能しますが、月の長さや跳躍を正しく処理しません。私の目的のために、これは問題ではありませんが、心に留めておく価値があります。
他のヒント
これは古い質問ですが、今後の参照のために:あなたは使用できます isodate.parse_duration()
このため。互換性のあるクラスを返します timedelta
.
所属していません StackOverflow