from __future__ import print_function, unicode_literals # если будешь запускать из-под python2
import re
import datetime
inp = '''
6 Jan @ 4:03pm
8 Jan @ 2:17pm
9 Dec @ 4:00am
9 Dec @ 5:14pm
9 Dec @ 5:28am
10 Jan @ 2:55pm
10 Jan @ 4:21am
10 Jan @ 7:14pm
12 Dec @ 7:48pm
12 Dec @ 7:50pm
12 Jan @ 3:32pm
13 Dec @ 3:43pm
13 Dec @ 5:02am
13 Dec @ 5:24am
14 Jan @ 5:17pm
15 Jan @ 5:29am
21 Dec @ 3:56pm
21 Dec @ 9:40am
'''
date_str = '%d %b @ %I:%M%p'
date_format = "{day} {month} @ {hour}:{min}{ampm}"
re_format = r'(\d {1,2}) (\w {3}) @ (\d {1,2}):(\d {1,2})([a-p][m])'
regex = re .compile ( re_format, re .I )
dates = regex.findall ( inp)
l_dates = [ ]
for date in dates:
dt = datetime .datetime .strptime ( date_format.format (
day= date[ 0 ] , month= date[ 1 ] , hour= date[ 2 ] , min = date[ 3 ] , ampm= date[ 4 ] ) ,
date_str)
l_dates.append ( dt)
l_dates.sort ( )
for date in l_dates:
print ( date.strftime ( date_str) )
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbiwgdW5pY29kZV9saXRlcmFscyAgIyDQtdGB0LvQuCDQsdGD0LTQtdGI0Ywg0LfQsNC/0YPRgdC60LDRgtGMINC40Lct0L/QvtC0IHB5dGhvbjIKaW1wb3J0IHJlCmltcG9ydCBkYXRldGltZQoKaW5wID0gJycnCjYgSmFuIEAgNDowM3BtCjggSmFuIEAgMjoxN3BtCjkgRGVjIEAgNDowMGFtCjkgRGVjIEAgNToxNHBtCjkgRGVjIEAgNToyOGFtCjEwIEphbiBAIDI6NTVwbQoxMCBKYW4gQCA0OjIxYW0KMTAgSmFuIEAgNzoxNHBtCjEyIERlYyBAIDc6NDhwbQoxMiBEZWMgQCA3OjUwcG0KMTIgSmFuIEAgMzozMnBtCjEzIERlYyBAIDM6NDNwbQoxMyBEZWMgQCA1OjAyYW0KMTMgRGVjIEAgNToyNGFtCjE0IEphbiBAIDU6MTdwbQoxNSBKYW4gQCA1OjI5YW0KMjEgRGVjIEAgMzo1NnBtCjIxIERlYyBAIDk6NDBhbQonJycKCmRhdGVfc3RyID0gJyVkICViIEAgJUk6JU0lcCcKZGF0ZV9mb3JtYXQgPSAie2RheX0ge21vbnRofSBAIHtob3VyfTp7bWlufXthbXBtfSIKcmVfZm9ybWF0ID0gcicoXGR7MSwyfSkgKFx3ezN9KSBAIChcZHsxLDJ9KTooXGR7MSwyfSkoW2EtcF1bbV0pJwoKcmVnZXggPSByZS5jb21waWxlKHJlX2Zvcm1hdCwgcmUuSSkKZGF0ZXMgPSByZWdleC5maW5kYWxsKGlucCkKCmxfZGF0ZXMgPSBbXQoKZm9yIGRhdGUgaW4gZGF0ZXM6CiAgICBkdCA9IGRhdGV0aW1lLmRhdGV0aW1lLnN0cnB0aW1lKGRhdGVfZm9ybWF0LmZvcm1hdCgKICAgIAlkYXk9ZGF0ZVswXSwgbW9udGg9ZGF0ZVsxXSwgaG91cj1kYXRlWzJdLCBtaW49ZGF0ZVszXSwgYW1wbT1kYXRlWzRdKSwKICAgIGRhdGVfc3RyKQogICAgbF9kYXRlcy5hcHBlbmQoZHQpCgpsX2RhdGVzLnNvcnQoKQoKZm9yIGRhdGUgaW4gbF9kYXRlczoKICAgIHByaW50KGRhdGUuc3RyZnRpbWUoZGF0ZV9zdHIpKQ==