python datetime strptime 通配符
我想将这样的日期解析为日期时间对象:
- 2008 年 12 月 12 日
- 2009 年 1 月 1 日
以下内容适用于第一个日期:
datetime.strptime("December 12th, 2008", "%B %dth, %Y")
但由于日期数字后缀(“st”),因此第二个日期将失败。 那么,strptime 中是否存在未记录的通配符? 或者更好的方法?
I want to parse dates like these into a datetime object:
- December 12th, 2008
- January 1st, 2009
The following will work for the first date:
datetime.strptime("December 12th, 2008", "%B %dth, %Y")
but will fail for the second because of the suffix to the day number ('st'). So, is there an undocumented wildcard character in strptime? Or a better approach altogether?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
尝试使用 dateutil.parser 模块。
其他文档可以在这里找到:http://labix.org/python-dateutil
Try using the dateutil.parser module.
Additional documentation can be found here: http://labix.org/python-dateutil
您需要 Gustavo Niemeyer 的 python_dateutil ——安装后,
You need Gustavo Niemeyer's python_dateutil -- once it's installed,
strptime 很棘手,因为它依赖于底层 C 库来实现,因此平台之间的一些细节有所不同。 似乎没有办法匹配您需要的字符。 但你可以先清理数据:
strptime is tricky because it relies on the underlying C library for its implementation, so some details differ between platforms. There doesn't seem to be a way to match the characters you need to. But you could clean the data first:
如果你想使用任意通配符,你可以使用 datetime-glob,这是我们开发的一个模块从一致的日期/时间格式生成的文件列表中解析日期/时间。 来自模块的文档:
If you want to use arbitrary wildcards, you can use datetime-glob, a module we developed to parse date/times from a list of files generated by a consistent date/time formatting. From the module's documentation:
对于像我一样只想要无需额外模块即可“工作”的人来说,这是一个快速而肮脏的解决方案。
For anyone who, like me, just want something that "works" without an additional module, this is a quick and dirty solution.