2

xs:durationタイトルのとおり、データ型を含む XML ファイルを解析しようとしています。これを Python オブジェクトに変換してtimedelta、さらに計算に使用できるようにしたいと思います。

strptime()関数と同様に、これを行う組み込みの方法はありますか? そうでない場合、これを達成するための最良の方法は何ですか?

4

2 に答える 2

5

これは古い質問ですが、将来の参考のために:これに使用できますisodate.parse_duration()。と互換性のあるクラスを返しますtimedelta

https://pypi.python.org/pypi/isodateを参照してください

于 2015-05-16T01:17:05.760 に答える
4

私が質問で尋ねたことの実例がすでにあるので、完全を期すためにここに投稿します。より良い答えが出てきたら、私は受け入れます。

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

これは機能しますが、月の長さやうるう年を正しく処理しません。私の目的では、これは問題ではありませんが、覚えておく価値があります。

于 2010-05-04T12:51:56.813 に答える