我試圖變得聰明并創建一個可以提取日期時間my_string并為其制作日期時間的單行班輪。然而,它并沒有安靜地作業。
my_string = 'London_XX65TR_20211116_112413.txt'
這是我的代碼:
datetime= datetime.datetime.strptime(my_string .split('_')[2],'%Y%m%d_%H%M%S')
這是我的輸出:
ValueError: time data '20211116' does not match format '%Y%m%d_%H%M%S'
uj5u.com熱心網友回復:
您可以使用以下maxsplit引數str.split:
>>> from datetime import datetime
>>> region, code, date_time = my_string[:-4].split('_', maxsplit=2)
>>> datetime.strptime(date_time, "%Y%m%d_%H%M%S")
datetime.datetime(2021, 11, 16, 11, 24, 13)
這意味著只拆分,最多maxsplit出現_左邊的字符,其余的保持原樣。
對于這種特殊情況,my_string[:-4]您可以使用代替,my_string.rstrip('.txt')一般不建議使用,因為它也可能會洗掉一些有用的資訊。然而,Python 3.9 您可以使用str.removesuffix:
>>> my_string = 'London_XX65TR_20211116_112413.txt'
>>> region, code, date_time = my_string.removesuffix('.txt').split('_', maxsplit=2)
>>> datetime.strptime(date_time, "%Y%m%d_%H%M%S")
datetime.datetime(2021, 11, 16, 11, 24, 13)
uj5u.com熱心網友回復:
你可以re.findall在這里使用:
from datetime import datetime
my_string = 'London_XX65TR_20211116_112413.txt'
ts = re.findall(r'_(\d{8}_\d{6})\.', my_string)[0]
dt = datetime.strptime(ts, '%Y%m%d_%H%M%S')
print(dt) # 2021-11-16 11:24:13
這種方法使用正則運算式從輸入字串中提取時間戳。你的其余邏輯已經是正確的。
uj5u.com熱心網友回復:
您遵循的方法是正確的。只是你沒有考慮 HH:MIN:Sec 部分,需要在格式化之前附加它,
my_string = 'London_XX65TR_20211116_112413.txt'
my_date = (my_string .split('_')[2] my_string .split('_')[3]).replace(".txt","")
datetime= datetime.datetime.strptime(my_date,'%Y%m%d%H%M%S')
print(datetime) # 2021-11-16 11:24:13
uj5u.com熱心網友回復:
您的代碼不起作用,因為my_string .split('_')給人['London', 'XX65TR', '20211116', '112413.txt']以這樣strptime('20211116', '%Y%m%d_%H%M%S')回傳一個錯誤。
你應該:
- 將格式限制為“%Y%m%d”,丟失 HMS
- 找到另一種方法來獲取與格式匹配的整個子字串
替代方案的第一部分是微不足道的,所以讓我們使用正則運算式進行第二部分。
import regex as re
datetime = datetime.datetime.strptime(re.search(r'\d{8}_\d{6}', my_string)[0],'%Y%m%d_%H%M%S')
uj5u.com熱心網友回復:
from datetime import datetime
date_time_str = '18/09/19 01:55:19'
date_time_obj = datetime.strptime(date_time_str, '%d/%m/%y %H:%M:%S')
print ("The type of the date is now", type(date_time_obj))
print ("The date is", date_time_obj)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/363568.html
上一篇:將日期時間用戶輸入存盤在串列中
