Home > Mobile >  How to split date of a list?
How to split date of a list?

Time:02-01

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']
  •  Tags:  
  • Related