Хорошо, поэтому, посмотрев на возможное решение, я решил отформатировать свои данные из строки DD-MM-YYYY в кортеж (YYYY, MM, DD).Затем я отправил эту информацию в словарь и распаковал ее с * в качестве аргумента для datetime.date.Остальное как в примере со ссылкой.
Полный код моей программы:
Небольшой кусок данных из new.txt (оригинал превышает 12 МБ):
=A=
=A=
XDD
29September201821:54
=F=
nice,urodzinymateriinieozywionej
29September201821:54
=A=
urodzinygaleriijurajskiejsaxd
29September201821:53
=A=
jakasgwiazdeczka
29September201821:53
=F=
czytakosamaona
29September201821:53
=F=
tenkocertjakoczescewentujakiegoswiekszego
29September201821:53
=F=
nieznaju
29September201821:52
=A=
koncertsylwiigrzeszczakbylxdnawetfajniegraja
29September201821:48
=A=
29September201821:48
=A=
XDD
29September201816:03
=F=
ladnie
29September201816:03
=F=
wbrystolu
29September201816:03
=F=
niewiemgdziejestem,brawo
29September201816:03
=F=
xD
29September201816:03
=F=
nawetnie
29September201816:03
=F=
anie
29September201816:03
=A=
OMGZUZKAsentaphoto.
29September201816:02
=F=
jawbathjestemzjarkiem
29September201816:02
=A=
Niebomalebylyxd
29September201816:02
=F=
cosznalazlaswtychjaskiniach?
29September201816:02
=A=
RondowolsztyniexD
29September201816:02
=A=
OMGZUZKAsentaphoto.
29September201816:02
=F=
29September201816:01
=A=
29September201816:01
=A=
Oh
29September201816:01
=F=
amniegorszeodrzucaja
29September201816:01
=F=
nie,boinnesazawszegorszenizzuzka
29September201816:01
=A=
Tytakmawiasz?XD
29September201816:00
=F=
kok
29September201815:51
=F=
xd
29September201815:51
Полный код для работы с файлом:
import re
from matplotlib import pyplot as plt
import datetime
def month(date):
if "January" in date:
return 1
elif "February" in date:
return 2
elif "March" in date:
return 3
elif "April" in date:
return 4
elif "May" in date:
return 5
elif "June" in date:
return 6
elif "July" in date:
return 7
elif "August" in date:
return 8
elif "September" in date:
return 9
elif "October" in date:
return 10
elif "November" in date:
return 11
elif "December" in date:
return 12
else:
pass
messages = open("new.txt","r").read()
dates = []
date_2digits = re.finditer('^[0-9][0-9][A-Z][a-z]*[0-9]{6}[:][0-9]{2}', messages, flags=re.MULTILINE)
date_1digit = re.finditer('^[0-9][A-Z][a-z]*[0-9]{6}[:][0-9]{2}', messages, flags=re.MULTILINE)
for _ in date_2digits:
txt = str(_.group(0))
dates.append((int(txt[-9:-5]),month(txt),int(txt[0:2])))
for _ in date_1digit:
txt = str(_.group(0))
dates.append((int(txt[-9:-5]), int(month(txt)), int(txt[0:1])))
dates_dict = {}
for entry in dates:
date = datetime.date(*entry)
if date not in dates_dict.keys():
dates_dict[date]=int(1)
elif date in dates_dict.keys():
add = dates_dict[date] + 1
dates_dict.update({date:add})
x = list(dates_dict.keys())
y = list(dates_dict.values())
#plt.plot_date(x,y,'.')
plt.bar(x,y)
plt.xticks(x, rotation='vertical')
plt.show()