从字符串中提取日期("05/Jan/2014")

Bas*_*asj 4 python string datetime parsing date

我想从字符串中提取日期,如:

15/Nov/2013
05/Jan/2014
Run Code Online (Sandbox Code Playgroud)

并像这样重新格式化

15/11/2013
05/01/2014
Run Code Online (Sandbox Code Playgroud)

是否有一个现成的功能(已经"知道"月份:1月,2月等)?

Mar*_*ers 5

如果您的语言环境是英语,那么标准datetime模块将为您解析月份缩写:

import datetime

date = datetime.datetime.strptime(inputvalue, '%d/%b/%Y').date()
Run Code Online (Sandbox Code Playgroud)

C(英文月份名称)是默认语言环境,因此这应该适用于未明确设置Python语言环境的任何位置.只要你不打电话locale.setlocale()locale.resetlocale()任何地方,你可以指望上述工作正常.

将这些格式化为不同的格式是微不足道的:

date.strftime('%d/%m/%Y')
Run Code Online (Sandbox Code Playgroud)

演示:

>>> datetime.datetime.strptime('15/Nov/2013', '%d/%b/%Y').date()
datetime.date(2013, 11, 15)
>>> datetime.datetime.strptime('05/Jan/2014', '%d/%b/%Y').date()
datetime.date(2014, 1, 5)
>>> datetime.datetime.strptime('15/Nov/2013', '%d/%b/%Y').date().strftime('%d/%m/%Y')
'15/11/2013'
>>> datetime.datetime.strptime('05/Jan/2014', '%d/%b/%Y').date().strftime('%d/%m/%Y')
'05/01/2014'
Run Code Online (Sandbox Code Playgroud)