2016-06-28 89 views
1

我有一個字符串,它看起來像:填充蟒蛇字符串日期時間按格式字符串

dt_string='some_prefix/%Y-%m-%d/%H:%M/some_postfix'

我想格式化這個字符串與當前日期和時間,以便它可能看起來像'some_prefix/2016-06-28/10:00/some_postfix'

但我的問題是日期模式可能並不總是在%Y-%m-%d/%H:%M。它可以是任何類似%m-%d-%Y/%H:%M。我看着datetime.datetime.strptime,但它採用格式作爲輸入。在我的情況下,格式不固定。有沒有一個函數可以根據輸入字符串動態地確定日期時間格式?或者我應該寫一個邏輯確定格式,然後使用datetime.datetime.strptime

+1

如何只使用直接串插?您可以使用Y,m,M,d,H等值填充字典,然後從那裏填充字符串。這樣,只要您提供所有可能的參數映射,它就會是格式不可知的。 – JwM

回答

2
from datetime import datetime 

dt1 = 'some_prefix/%Y-%m-%d/%H:%M/some_postfix' 
dt2 = 'some_prefix/%m-%d-%Y/%H:%M/some_postfix' 

def fill_date(dt_str): 
    d = datetime.now() 
    filled = dt_str.replace('%Y', str(d.year))\ 
        .replace('%m', str(d.month))\ 
        .replace('%d', str(d.day))\ 
        .replace('%H', str(d.hour))\ 
        .replace('%M', str(d.minute)) 
    return filled 

print(fill_date(dt1)) 
> 'some_prefix/2016-6-28/13:41/some_postfix' 
print(fill(date(dt2)) 
> 'some_prefix/6-28-2016/13:42/some_postfix' 

只要它們使用相同的命名約定,這應該適用於所有情況。它也不會介意一個字符串是否會丟失其中一個字段(如可能沒有時間,只有日期),或者如果有幾秒鐘出現,您可以在替換鏈上添加一個秒。