蟒蛇日期时间strptime通配符
我想分析日期这样的成DateTime对象:蟒蛇日期时间strptime通配符
- 2008年12月12日
- 2009年1月1日
以下将第一次约会的工作:
datetime.strptime("December 12th, 2008", "%B %dth, %Y")
但由于后缀为日数('st'),第二秒会失败。那么,strptime中是否存在未公开的通配符?或者更好的方法呢?
尝试使用dateutil.parser模块。
import dateutil.parser
date1 = dateutil.parser.parse("December 12th, 2008")
date2 = dateutil.parser.parse("January 1st, 2009")
的其他文档可以在这里找到:http://labix.org/python-dateutil
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")
我会担心这会在八月份做什么。 – 2009-08-11 02:44:36
这就是为什么我包含尾随逗号。 – 2009-08-11 02:48:01
我想说你最好在你的正则表达式之前加入 [\ d] {1,2} 。毕竟你想在数字后面匹配后缀,对吧? :-) – Vince 2009-08-11 05:01:10
你需要古斯塔沃·尼迈耶的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)
>>>
对于任何人谁像我一样,只是想要的东西,“作品”没有额外的模块,这是一个快速和肮脏的解决方案。
string_list = ["th", "rd", "nd", "st"]
time = None
for str in string_list:
if (time is not None):
break
try:
match_string = '%B %d' + str +', %Y'
time = datetime.strptime("December 12th, 2008", match_string)
except Exception:
pass
python-dateutil看起来已经移动了。该文档位于https://dateutil.readthedocs.org/en/latest/,并有链接到它的github repo和pypi页面。 – drevicko 2015-05-15 12:25:36