我想使用Python解析如下所示的自由文本时间间隔:
有没有一种无痛的方法可以做到这一点,理想情况下只需调用一个库函数?
我试过了:
dateutil.parser.parse(),它可以理解几小时而不是几天或更长时间.mx.DateTime.DateTimeDeltaFrom(),它可以通过几天了解,但在数周或更长的时间内失败,并且默默地(例如,它可能会创建一个长度为0的区间,或者将"2个月"解析为2分钟).小智 6
这个对我来说是新的,但基于一些谷歌搜索,你试过whoosh吗?
编辑:还有parsedatetime:
#!/usr/bin/env python
from datetime import datetime
import parsedatetime as pdt # $ pip install parsedatetime
cal = pdt.Calendar()
for time_str in ['1 second', '2 minutes','3 hours','5 weeks','6 months','7 years']:
diff = cal.parseDT(time_str, sourceTime=datetime.min)[0] - datetime.min
print("{time_str:<10} -> {diff!s:>20} <{diff!r}>".format(**vars()))
Run Code Online (Sandbox Code Playgroud)
1 second -> 0:00:01 <datetime.timedelta(0, 1)>
2 minutes -> 0:02:00 <datetime.timedelta(0, 120)>
3 hours -> 3:00:00 <datetime.timedelta(0, 10800)>
5 weeks -> 35 days, 0:00:00 <datetime.timedelta(35)>
6 months -> 181 days, 0:00:00 <datetime.timedelta(181)>
7 years -> 2556 days, 0:00:00 <datetime.timedelta(2556)>
Run Code Online (Sandbox Code Playgroud)
pytimeparselib怎么样
以秒数形式返回时间:
from pytimeparse.timeparse import timeparse
>>> timeparse('33m')
1980
>>> timeparse('2h33m')
9180
>>> timeparse('4:17')
257
>>> timeparse('5hr34m56s')
20096
>>> timeparse('1.2 minutes')
72
Run Code Online (Sandbox Code Playgroud)
源似乎在这里https://github.com/wroberts/pytimeparse
| 归档时间: |
|
| 查看次数: |
2659 次 |
| 最近记录: |