Другие ответили на это, но есть 2 основных вопроса.
Вы пытались отнять 2 строки друг от друга, python не может этого сделать, вместо этого вы должны вычесть 2 объекта datetime. Кроме того, re.findall()
возвращает список длины 1, поэтому при объединении chg_date
в chg_date_str
вам фактически пришлось объединить 0-й элемент в возвращаемом списке, который будет chg_date_str[0]
. Это также выглядит чище, если вы объединяете ', '
вместо пустой строки, конечно, соответственно обновляя параметры datetime.
import re
from datetime import datetime, timedelta, date
string = 'configuration change at 18:06:39 EET Thu Jan 30 2020 by netbrain'
chg_date = re.findall(r"(\d{2}:\d{2}:\d{2}) \w+ \w+ (\w{3} \d{2} \d{4})", string)
chg_date_str = ', '.join(map(str, chg_date[0]))
datetime_object = datetime.strptime(chg_date_str, '%H:%M:%S, %b %d %Y')
time_difference = datetime.now() - datetime_object
print(chg_date_str)
print(time_difference)
вывод:
18:06:39, Jan 30 2020
5 days, 19:05:05.272112
, который, как я полагаю, является тем, что вы хотите.