从字符串“3d02h”中提取日期
Extact date from string "3d02h"
我正在从 SSH 连接输出中提取一个字符串,它给我一个像“3d02h”这样的字符串,我必须将这个日期插入到数据库中。
输出来自在 cisco_switch 中执行的命令 "show spanning-tree detail | inc ieee|occurr|from|is exec",它给了我以下输出:
VLAN0001 正在执行 ieee 兼容生成树协议
拓扑更改次数 490 最后一次更改发生在 3d02h 前
来自 GigabitEthernet1/0/11
所以我使用 .split() 函数从输出中提取“3d02h”。
现在我想将字符串转换为日期时间对象。
我尝试使用 datetime.strptime(string, "%d %H") 从字符串中提取日期和小时,但它不起作用。
我已经用 re 和 parsedatetime 完成了。
from datetime import datetime
import parsedatetime as pdt
import re
cal = pdt.Calendar()
print(datetime.now())
date = "3d02h"
index = 2
date = re.findall(r'[A-Za-z]+|\d+', date)
date_len = int(len(date))
date_len = date_len // 2
for item in range(0, date_len):
date.insert(index, ' ago ')
index += 3
date = "".join(date)
print(date)
date, flags = cal.parseDT(date)
assert flags
print(date)
输出为:
2019-09-05 13:37:28.710065
3d ago 02h ago
2019-09-02 11:37:28
Question: Date ago from a period
from datetime import datetime, timedelta
import re
dayshour = "3d02h"
now = datetime.strptime('2019-09-05 13:37:28.710065',
'%Y-%m-%d %H:%M:%S.%f')
days, hours, _ = re.split(r'[dh]', dayshour)
ago = now - timedelta(days=int(days), hours=int(hours))
print('now:{}\n{} => {}, {}\nago:{}'\
.format(now, dayshour, int(days), int(hours),
ago.strftime('%Y-%m-%d %H:%M:%S')))
Output:
now:2019-09-05 13:37:28.710065
3d02h => 3, 2
ago:2019-09-02 11:37:28
测试 Python:3.6
我正在从 SSH 连接输出中提取一个字符串,它给我一个像“3d02h”这样的字符串,我必须将这个日期插入到数据库中。
输出来自在 cisco_switch 中执行的命令 "show spanning-tree detail | inc ieee|occurr|from|is exec",它给了我以下输出:
VLAN0001 正在执行 ieee 兼容生成树协议 拓扑更改次数 490 最后一次更改发生在 3d02h 前 来自 GigabitEthernet1/0/11
所以我使用 .split() 函数从输出中提取“3d02h”。
现在我想将字符串转换为日期时间对象。
我尝试使用 datetime.strptime(string, "%d %H") 从字符串中提取日期和小时,但它不起作用。
我已经用 re 和 parsedatetime 完成了。
from datetime import datetime
import parsedatetime as pdt
import re
cal = pdt.Calendar()
print(datetime.now())
date = "3d02h"
index = 2
date = re.findall(r'[A-Za-z]+|\d+', date)
date_len = int(len(date))
date_len = date_len // 2
for item in range(0, date_len):
date.insert(index, ' ago ')
index += 3
date = "".join(date)
print(date)
date, flags = cal.parseDT(date)
assert flags
print(date)
输出为:
2019-09-05 13:37:28.710065
3d ago 02h ago
2019-09-02 11:37:28
Question: Date ago from a period
from datetime import datetime, timedelta
import re
dayshour = "3d02h"
now = datetime.strptime('2019-09-05 13:37:28.710065',
'%Y-%m-%d %H:%M:%S.%f')
days, hours, _ = re.split(r'[dh]', dayshour)
ago = now - timedelta(days=int(days), hours=int(hours))
print('now:{}\n{} => {}, {}\nago:{}'\
.format(now, dayshour, int(days), int(hours),
ago.strftime('%Y-%m-%d %H:%M:%S')))
Output:
now:2019-09-05 13:37:28.710065 3d02h => 3, 2 ago:2019-09-02 11:37:28
测试 Python:3.6