2017-04-12 198 views
1

我有包含尾隨時間戳的字符串值。我以爲我可以使用strptime 一個正則表達式模式來提取這些。我可以在datetime.strptime格式內使用正則表達式嗎?

像:

from __future__ import print_function 

from datetime import datetime 
# this here works 
input_with_ts = "20170410_1133" 
print(datetime.strptime(input_with_ts, '%Y%m%d_%H%M')) 
# but this is how things really look like 
input_with_ts = "foo_bar_D31_848_20170410_1133" 
print(datetime.strptime(input_with_ts, 'foo_bar_.*_.*_%Y%m%d_%H%M')) 

給出:

2017-04-10 11:33:00 
Traceback (most recent call last): 
    File "test.py", line 9, in <module> 
    print(datetime.strptime(input_with_ts, 'foo_bar_.*_.*_%Y%m%d_%H%M')) 
    File "/usr/lib/python2.7/_strptime.py", line 332, in _strptime 
(data_string, format)) 
ValueError: time data 'foo_bar_D31_848_20170410_1133' does not match format 'foo_bar_.*_.*_%Y%m%d_%H%M' 

簡單地想知道:是,甚至有可能 - 把一個正則表達式模式轉化成格式字符串?如果沒有,那麼讓我到那裏的直接規範方法是什麼?

回答

3

不,您不能,只支持固定文本(所以文字)和日期時間組件。

只是首先提取日期時間部分;你可以使用的正則表達式,當然任務。不是所需要在你的例子,因爲日期時間部分在端文本的一個固定寬度的塊:

datetime.strptime(input_with_ts[-13:], '%Y%m%d_%H%M') 
相關問題