use*_*142 4 python xml ms-project python-2.7
我正在尝试使用 python 解析从 MS Project 2013 导出的 xml 文件,它包含以下数据:
<TimephasedData>
<Type>1</Type>
<UID>4628</UID>
<Start>2014-09-22T08:00:00</Start>
<Finish>2015-09-22T08:00:00</Finish>
<Unit>8</Unit>
<Value>PT2920H0M0S</Value>
</TimephasedData>
<TimephasedData>
<Type>1</Type>
<UID>4628</UID>
<Start>2015-09-22T08:00:00</Start>
<Finish>2015-09-23T08:00:00</Finish>
<Unit>2</Unit>
<Value>PT8H0M0S</Value>
</TimephasedData>
Run Code Online (Sandbox Code Playgroud)
我不明白 PT8H0M0S 和 PT2920H0M0S 代表什么(TimephasedData)。目前我通过替换字符“T”来解析日期,然后使用strptime
这是 ISO 8601 持续时间值。比较iCal 持续时间数据类型规范,它使用以下表示法:
正式定义
值类型由以下符号定义:
Run Code Online (Sandbox Code Playgroud)dur-value = (["+"] / "-") "P" (dur-date / dur-time / dur-week) dur-date = dur-day [dur-time] dur-time = "T" (dur-hour / dur-minute / dur-second) dur-week = 1*DIGIT "W" dur-hour = 1*DIGIT "H" [dur-minute] dur-minute = 1*DIGIT "M" [dur-second] dur-second = 1*DIGIT "S" dur-day = 1*DIGIT "D"
PT8H0M0S持续时间 ( T)、8 小时 ( 8H)、0 分钟 ( 0M)、0 秒 ( 0S)也是如此。(P当然,它代表“期间”)。
至少有一个 Python 包可以处理这些类型的值的转换,例如https://pypi.python.org/pypi/isodate。