我在串列中有這個示例日志資料
data = ["[2022-08-15 17:42:32,436: INFO/MainProces] lorqw q addadasdasdasdad",
"2022-10-24T13:29:50.579Z dasdadasdasdadadadadaddada",
"asdadadad adasdas3453 454234 fsdf53",
"Mon, 24 Oct 2022 13:29:48 GMT express:router expressInit : /health",
'time="2022-10-24T13:29:12Z" level=error msg="checking config status failed: sdadasd"',
"2022/10/24 13:29:15 [error] 234 ssdfsd 435345"]
如果日期與其索引一起存在,我到目前為止嘗試列印該專案的內容
for index, elem in enumerate(data):
if ']' and '[' in elem:
print(f'Date found at index: {index}')
電流輸出:
Date found at index: 0
Date found at index: 5
預期輸出:
Date found at index: 0
Date found at index: 1
Date found at index: 3
Date found at index: 4
Date found at index: 5
uj5u.com熱心網友回復:
由于日期中唯一真正重復的部分是時間,我會用正則運算式來追蹤時間:
for index, entry in enumerate(data):
if re.search(r'(\s|T)[0-9]{2}\:[0-9]{2}\:[0-9]{2}([\.\,][0-9] )*', entry):
print(f"Found date in {index}")
uj5u.com熱心網友回復:
您可以使用這個正則運算式集合
import re
data = [
"[2022-08-15 17:42:32,436: INFO/MainProces] lorqw q addadasdasdasdad",
"2022-10-24T13:29:50.579Z dasdadasdasdadadadadaddada",
"asdadadad adasdas3453 454234 fsdf53",
"Mon, 24 Oct 2022 13:29:48 GMT express:router expressInit : /health",
'time="2022-10-24T13:29:12Z" level=error msg="checking config status failed: sdadasd"',
"2022/10/24 13:29:15 [error] 234 ssdfsd 435345"
]
exps = [
r"(\d{4}[-/]\d{2}[-/]\d{2})", # year / month / day
r"(\d{2}:\d{2}:\d{2})", # hour : min : sec
r"((?=.*(jan|feb|mar|apr|may|jun|jul|aug|sept|oct|nov|dec))(?=.*(mon|tues|wed|thurs|fri)))",
]
p = re.compile('|'.join(exps))
for d in data:
if bool(p.search(d.lower())):
print(d)
uj5u.com熱心網友回復:
看看這個模塊(我不是所有者) - https://github.com/ishirav/date-detector 還有類似專案的鏈接。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/520234.html
上一篇:在python中增加字串中的數字
