Я предложил бы использовать DateTime, если вы хотите работать с датами, так как это ваше регулярное выражение будет соответствовать любой комбинации dd.dd.dd:
from datetime import datetime
def date():
dates = []
user_input =''
while user_input != 'end':
user_input = raw_input("Please put folder with format yy.mm.dd or 'end': ")
try:
dte = datetime.strptime(user_input,"%y.%m.%d")
dates.append(dte)
except ValueError:
print "Use yy.mm.dd format or write 'end'"
print 'Dates:'
return dates
Если вы хотите диапазон дат между началом и концом:
from datetime import datetime, timedelta
def date():
dates = []
while True:
start = raw_input("Please put start date with format yy.mm.dd or 'end': ")
if start == "end":
break
end = raw_input("Please put end date with format yy.mm.dd or 'end': ")
try:
start = datetime.strptime(start,"%y.%m.%d")
end = datetime.strptime(end,"%y.%m.%d")
for _ in xrange((end-start).days+1):
dates.append(start)
start += timedelta(days=1)
except ValueError:
print "Use yy.mm.dd format or write 'end'"
print 'Dates:'
return dates
pandas также могут быть полезны:
from datetime import datetime
import pandas as pd
def date():
dates = []
while True:
start = raw_input("Please put start date with format yy.mm.dd or 'end': ")
if start == "end":
break
end = raw_input("Please put end date with format yy.mm.dd or 'end': ")
try:
start = datetime.strptime(start,"%y.%m.%d")
end = datetime.strptime(end,"%y.%m.%d")
dates.append(pd.date_range(start, end))
except ValueError:
print "Use yy.mm.dd format or write 'end'"
print 'Dates:'
return dates
Пожалуйста, сообщите нам, что в данный момент не так с кодом. – BlackVegetable
не рекомендуется использовать re, просто попробуйте конвертировать в объекты datetime с помощью try/except, если вы хотите использовать даты. 44.44.44 также будет соответствовать вашему регулярному выражению –
в коде, который просто отсутствует 'import re' и функция вызова' date() '.... down vote –