Трансформатор даты

Мне действительно нужна помощь с этим кодом. Мне нужно написать код, используя входной файл Unit 5 Dates.txt , содержащий даты в форме yyyy/mm/dd , прочитать все строки в списке, найти самые ранние и последние даты и распечатать, а затем преобразовать строку даты в форме July 12, 2014 и распечатать все даты.

Я написал код, и он работает нормально, но я не знаю, как преобразовать дату в форму November 10, 2015 .

 def main(): dateList = get_list() dateMin = find_min(dateList) print(dateMin) dateMax = find_max(dateList) print(dateMax) print () print_dates(dateList) #changeDate = date_changer(dateList) def get_list(): infile = open("Unit 5 Dates.txt", 'r') dateList = infile.readlines() infile.close() return dateList def find_min(dateList): dateMin = dateList[0] for index in range(len(dateList)): dateList[index] = dateList[index].rstrip("\n") if dateList[index] < dateMin: dateMin = dateList[index] return "The earlest date in the file is: " + dateMin def find_max(dateList): dateMax = dateList[0] for index in range(len(dateList)): if dateList[index] > dateMax: dateMax = dateList[index] return"The latest date in the file is: " + dateMax def print_dates(dateList): print("This is the list of dates") for index in range(len(dateList)): print(dateList[index]) main() 

Что ты мне сказал, я делаю это, но это не работает. Что делать, если я хочу прочитать его из txt-файла Unit 5 Dates.txt , у которого уже есть все даты. Например, если вы посмотрите на мой код, я создаю возвращающую значение функцию, называемую get_list , а затем define ее и открываю файл Unit 5 dates.txt , файл и читаю все даты из файла txt.

Здесь Iis, что я до сих пор. У меня есть создать функцию, называемую date_chnage а также я определяю функцию. Но когда я запускаю код, он дает мне сообщение об ошибке.

 def date_changer(dateList): import datetime as datechanger infile = open("Unit 5 Dates.txt", 'r') print("This is the list of dates") for index in range(len(dateList)): dateList = datechanger.datetime.strptime(datechanger, '%Y/%m/%d').date() print (date.strftime("%B %d, %Y")) main() 

Вот ошибка, которая мне дает

File "/Users/mohamedkeita/Library/Mobile Documents/com~apple~CloudDocs/School/2015:2016 School/Python/Unit 5/KeitaM_Unit 5 copy.py", line 18, in main changeDate = date_changer(dateList) File "/Users/mohamedkeita/Library/Mobile Documents/com~apple~CloudDocs/School/2015:2016 School/Python/Unit 5/KeitaM_Unit 5 copy.py", line 70, in date_changer dateList = datechanger.datetime.strptime(datechanger, '%Y/%m/%d').date() TypeError: must be str, not module

Использовать дату и время :

 import datetime as dt dates='''\ 2015/11/11 1941/12/07 1776/07/04''' for ds in dates.splitlines(): date=dt.datetime.strptime(ds, '%Y/%m/%d').date() print(date.strftime("%B %d, %Y")) 

Печать:

 November 11, 2015 December 07, 1941 July 04, 1776 

Вы также можете использовать дату даты и времени для max и min:

 >>> max(dates.splitlines(), key=lambda l: dt.datetime.strptime(l, '%Y/%m/%d').date()) '2015/11/11' >>> min(dates.splitlines(), key=lambda l: dt.datetime.strptime(l, '%Y/%m/%d').date()) '1776/07/04' 

Хотя я использую dates.splitlines() в примере, это может быть другой источник – например, файл.

В случае, когда у вас есть YYYY / MM / DD в виде цифр в строке, вы также можете просто использовать лексикографическую сортировку для определения min / max:

 >>> max(dates.splitlines()) '2015/11/11' >>> min(dates.splitlines()) '1776/07/04' 

Если вам нужно преобразовать или подтвердить дату, используйте дату и время.