Я пытаюсь найти регулярное выражение для извлечения месяца, дня и года из метки даты и времени в этом формате:

01/20/2019 12:34:54

Должен вернуть список:

['01', '20', '2019']

Я знаю, что это можно решить с помощью:

dt.split(' ')[0].split('/')

Но я пытаюсь найти регулярное выражение для этого:

[^\/\s]+ 

Но мне нужно это исключить все после пробела.

-1
Evan Brittain 2 Май 2019 в 07:37

3 ответа

Лучший ответ

Поскольку вы ожидаете, что дата, месяц и год будут возвращены в виде списка, вы можете использовать этот код Python,

import re

s = '01/20/2019 12:34:54'
print(re.findall(r'\d+(?=[ /])', s))

Отпечатки ,

['01', '20', '2019']

В противном случае, вы можете лучше написать свое регулярное выражение как,

(\d{2})/(\d{2})/(\d{4})

И получить дату, месяц и год от group1, group2 и group3

Regex Demo

Код Python таким образом должен быть,

import re

s = '01/20/2019 12:34:54'
m = re.search(r'(\d{2})/(\d{2})/(\d{4})', s)
if m:
 print([m.group(1), m.group(2), m.group(3)])

Отпечатки ,

['01', '20', '2019']
2
Pushpesh Kumar Rajwanshi 2 Май 2019 в 04:49

Этот RegEx может помочь вам в этом.

([0-9]+)\/([0-9]+)\/([0-9]+)\s[0-9]+:[0-9]+:[0-9]+

enter image description here

Код:

import re

string = '01/20/2019 12:34:54'
matches = re.search(r'([0-9]+)/([0-9]+)/([0-9]+)', string)
if matches:
    print([matches.group(1), matches.group(2), matches.group(3)])
else: 
    print('Sorry! No matches! Something is not right! Call 911')

Выход

['01', '20', '2019']
0
Emma 2 Май 2019 в 05:29

Здесь вы обязательно должны использовать API даты / времени Python. Используйте strptime для синтаксического анализа вашей входной строки даты и времени в истинной дате и времени Python. Затем просто создайте список, получая доступ к различным компонентам, которые вам нужны.

dt = "01/20/2019 12:34:54"
dto = datetime.strptime(dt, '%m/%d/%Y %H:%M:%S')

list = [dto.month, dto.day, dto.year]
print(list)

[1, 20, 2019]

Если вы действительно хотите / должны работать с исходной строкой даты и времени, тогда split предоставляет опцию, даже без формального использования регулярного выражения:

dt = "01/20/2019 12:34:54"
dt = dt.split()[0].split('/')
print(dt)

['01', '20', '2019']
0
Tim Biegeleisen 2 Май 2019 в 04:52