为了账号安全,请及时绑定邮箱和手机立即绑定

将整数读取和解析为日期

将整数读取和解析为日期

一只斗牛犬 2022-01-18 17:40:31
我的任务的目标是从输入文件中读取日期,然后搜索并映射它。因此,我可以查找特定日期或获取每个月的结束日期。我已经花了 3 天时间,但我似乎无法弄清楚如何读取或解析文件。这是我尝试过的:1)import datetimedef createDateList(filePath):    data = open(filePath, 'r')    dateList = []    for space in data:        month, day, year = map(int, space.split())        date1 = datetime.date(year, month, day)        dateList.append(date1)return dateList这是输入的样子:6 6 19707 7 20013 15 19741 7 19772 17 1983...提前致谢!
查看完整描述

2 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

第一个片段中的错误是因为你做了from datetime import datetime而不是import datetime之前做datetime.date.

另请注意, to 的参数datetime.date是 ordered (year, month, day)


查看完整回答
反对 回复 2022-01-18
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

这是一种解析日期并将它们放入列表的方法。


拆分中的正则表达式''\s|(?<=\d{4})(?=\d)'表示在四个连续数字(后跟一个数字)之后在空格或空格上拆分。这样,年份将与月份的以下数字分开。这些是正则表达式中的后视和前瞻结构。


import re

from datetime import date


s = '6 6 19707 7 20013 15 19741 7 19772 17 1983'


dates = re.split(r'\s|(?<=\d{4})(?=\d)', s)


# get length less last 3

i = len(dates) - 3


j = 0

final_date = []


while j <= i:

    m, d, yr = dates[j:j+3]

    final_date.append(date(int(yr), int(m), int(d)))

    j += 3


for d in final_date:

    print(d)

输出:


1970-06-06

2001-07-07

1974-03-15

1977-01-07

1983-02-17


查看完整回答
反对 回复 2022-01-18
  • 2 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号