我真的需要一些关于此代码的帮助。我必须使用输入文件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中的所有日期文件。
这里是我到目前为止所拥有的。我已经创建了一个名为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
答案 0 :(得分:3)
使用datetime:
November 11, 2015
December 07, 1941
July 04, 1776
打印:
>>> 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()
虽然我在示例中使用>>> max(dates.splitlines())
'2015/11/11'
>>> min(dates.splitlines())
'1776/07/04'
,但这可能是另一个来源 - 例如文件。
如果您将YYYY / MM / DD作为字符串中的数字,您也可以使用lexicographical sorting来确定最小/最大值:
{{1}}
如果您需要转换或验证日期,请使用日期时间。