读取和解析整数作为日期

时间:2019-04-22 18:06:14

标签: python python-3.x python-2.7 parsing file-io

我的任务是从输入文件中读取日期,然后进行搜索和映射。因此,我可以查找特定日期或获取每个月的结束日期。我已经花了3天的时间,但似乎无法弄清楚如何读取或解析文件。

这是我尝试过的:

1)

import datetime

def 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 个答案:

答案 0 :(得分:1)

第一个代码段中的错误是因为您在执行from datetime import datetime之前做了import datetime而不是datetime.date

还要注意,datetime.date的参数是按(year, month, day)排序的。

答案 1 :(得分:0)

这里是一种分析日期并将其放入列表的方法。

正则表达式''\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