问题更新: 我通过雷达回答解决了这个问题。 问题是如果我在文件中有2个或更多相同的日期,我怎么能打印一些东西,我怎么能比较线后的线?
文件更新:
25/12/2015|5940.0
25/12/2015|5720.0
25/12/2015|8404.0
26/12/2015|9229.0
27/12/2015|8380.0
27/12/2015|6998.5
27/12/2015|10667.0
28/12/2015|8720.0
结束问题更新!
我的程序必须打印我日期范围内的所有行。 我的文件看起来像这样:
24/12/2015|5940.0
25/12/2015|5720.0
26/12/2015|8404.0
27/12/2015|9229.0
28/12/2015|8380.0
29/12/2015|6998.5
30/12/2015|10667.0
31/12/2015|8720.0
第一个日期是2015年12月28日,结束日期是2015年12月30日。
预期:
28/12/2015 ---> 8380.0
29/12/2015 ---> 6998.5
30/12/2015 ---> 10667.0
同样在我的档案中会有相同的日期。 我听说我可以用一些python函数比较日期并打印出来,但是我找不到它。
答案 0 :(得分:2)
使用strptime
将字符串转换为日期时间并使用csv
模块读取文件数据
import csv
from datetime import datetime
start = datetime(2015, 12, 28)
end = datetime(2015, 12, 30)
with open("data.txt", "r") as f:
r = csv.reader(f,delimiter ="|")
for line in r:
lineDate = datetime.strptime(line[0],"%d/%m/%Y")
if start <= lineDate <=end :
print("{0} ---> {1}".format(*line)
答案 1 :(得分:0)
我想您知道如何从文件进程中读取,但主要问题是如何将字符串转换为日期并进行比较,因此以下是使用strptime将字符串作为日期进行比较的方法:
In [1]: import datetime
In [2]: my_date = datetime.datetime.strptime("24/12/2015","%d/%m/%Y") #string_to_date
In [3]: my_date
Out[3]: datetime.datetime(2015, 12, 24, 0, 0)
In [4]: my_date_2 = datetime.datetime.strptime("28/12/2015","%d/%m/%Y")
In [5]: my_date < my_date_2
Out[5]: True