-2

I have a list:

['Sun Oct 24 10:31:10 +0000 2021','Sun Oct 24 10:45:02 +0000 2021','Mon Oct 25 04:13:27 +0000 2021',
 'Mon Oct 25 04:26:20 +0000 2021','Mon Oct 25 04:32:32 +0000 2021','Mon Oct 25 04:56:39 +0000 2021',
 'Mon Oct 25 05:21:21 +0000 2021','Mon Oct 25 06:46:27 +0000 2021','Mon Oct 25 08:59:13 +0000 2021']

How can I get this result:

['Sun Oct 24', 'Sun Oct 24', 'Mon Oct 25', 'Mon Oct 25', 'Mon Oct 25', 'Mon Oct 25', 'Mon Oct 25',
 'Mon Oct 25', 'Mon Oct 25']
Yevhen Bondar
  • 4,357
  • 1
  • 11
  • 31

2 Answers2

0

If you have fixed format dates, you can just take first 10 chars of every string date

dates = ['Sun Oct 24 10:31:10 +0000 2021','Sun Oct 24 10:45:02 +0000 2021','Mon Oct 25 04:13:27 +0000 2021',
 'Mon Oct 25 04:26:20 +0000 2021','Mon Oct 25 04:32:32 +0000 2021','Mon Oct 25 04:56:39 +0000 2021',
 'Mon Oct 25 05:21:21 +0000 2021','Mon Oct 25 06:46:27 +0000 2021','Mon Oct 25 08:59:13 +0000 2021']


trunc_dates = [
    date[:10] for date in dates
]

print(trunc_dates)

Output

['Sun Oct 24', 'Sun Oct 24', 'Mon Oct 25', 'Mon Oct 25', 'Mon Oct 25', 'Mon Oct 25', 'Mon Oct 25', 'Mon Oct 25', 'Mon Oct 25']

Also you can use more reliable solution with parsing via dateutil and formatting

from dateutil import parser

dates = ['Sun Oct 24 10:31:10 +0000 2021','Sun Oct 24 10:45:02 +0000 2021','Mon Oct 25 04:13:27 +0000 2021',
 'Mon Oct 25 04:26:20 +0000 2021','Mon Oct 25 04:32:32 +0000 2021','Mon Oct 25 04:56:39 +0000 2021',
 'Mon Oct 25 05:21:21 +0000 2021','Mon Oct 25 06:46:27 +0000 2021','Mon Oct 25 08:59:13 +0000 2021']



trunc_dates = [
    parser.parse(date).strftime('%a %b %d')
    for date in dates
]

print(trunc_dates)

Output

['Sun Oct 24', 'Sun Oct 24', 'Mon Oct 25', 'Mon Oct 25', 'Mon Oct 25', 'Mon Oct 25', 'Mon Oct 25', 'Mon Oct 25', 'Mon Oct 25']
Yevhen Bondar
  • 4,357
  • 1
  • 11
  • 31
  • Or maybe more universally, use some date/time formatting https://stackoverflow.com/questions/466345/converting-string-into-datetime – mikulatomas Jan 31 '22 at 08:02
0

We could use re.sub here for a regex based approach:

inp = ['Sun Oct 24 10:31:10 +0000 2021', 'Sun Oct 24 10:45:02 +0000 2021', 'Mon Oct 25 04:13:27 +0000 2021', 'Mon Oct 25 04:26:20 +0000 2021', 'Mon Oct 25 04:32:32 +0000 2021', 'Mon Oct 25 04:56:39 +0000 2021', 'Mon Oct 25 05:21:21 +0000 2021', 'Mon Oct 25 06:46:27 +0000 2021', 'Mon Oct 25 08:59:13 +0000 2021']
output = [re.sub(r'\s+\d{2}:.*$', '', x) for x in inp]
print(output)

# ['Sun Oct 24', 'Sun Oct 24', 'Mon Oct 25', 'Mon Oct 25', 'Mon Oct 25',
   'Mon Oct 25', 'Mon Oct 25', 'Mon Oct 25', 'Mon Oct 25']
Tim Biegeleisen
  • 502,043
  • 27
  • 286
  • 360