python datetime strptime 通配符
我想把这些日期转换成日期时间对象:
- 2008年12月12日
- 2009年1月1日
下面的代码可以处理第一个日期:
datetime.strptime("December 12th, 2008", "%B %dth, %Y")
但是对于第二个日期就不行了,因为日期后面有个后缀('st')。所以,strptime里有没有什么不为人知的通配符?或者有没有更好的方法呢?
5 个回答
8
strptime这个函数有点复杂,因为它是依赖于底层的C语言库来实现的,所以在不同的平台上可能会有一些细节上的差异。看起来没有办法完全匹配你需要的字符。不过,你可以先对数据进行清理:
# Remove ordinal suffixes from numbers.
date_in = re.sub(r"(st|nd|rd|th),", ",", date_in)
# Parse the pure date.
date = datetime.strptime(date_in, "%B %d, %Y")
10
你需要安装 Gustavo Niemeyer 的 python_dateutil 库——安装完成后,
>>> from dateutil import parser
>>> parser.parse('December 12th, 2008')
datetime.datetime(2008, 12, 12, 0, 0)
>>> parser.parse('January 1st, 2009')
datetime.datetime(2009, 1, 1, 0, 0)
>>>
18
可以试试使用 dateutil.parser 这个模块。
import dateutil.parser
date1 = dateutil.parser.parse("December 12th, 2008")
date2 = dateutil.parser.parse("January 1st, 2009")
更多的文档可以在这里找到: http://labix.org/python-dateutil