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']
CodePudding user response:
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']
CodePudding user response:
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']
