繁体   English   中英

从txt文件Python打印两个日期之间的行

[英]Print lines between two dates from txt file Python

我有这样的“ transactions.txt”文件:

1:5:iznos:15.02.2017.:usser
2:2:iznos:17.02.2017.:usser2
3:3:iznos:3.04.2017.:usser2
4:3:iznos:3.04.2017.:useer
5:7:iznos:5.05.2017.:usser2
6:3:iznos:16.06.2017.:usser3
7:8:iznos:18.06.2017.:usser

和功能是这样的:

def date():
    start_date = input("Enter star date: ")
    date1 = date.strptime(start_date, "%d.%m.%Y.")
    end_date = input("Enter end date datum: ")
    date2 = date.strptime(end_date, "%d.%m.%Y.")
    if date1 > date2:
        print("Error:")
        date()
    elif date1 < date2:
        ### PRINT LINES BETWEEN THEESE TWO DATES        
date()

如何打印两个输入日期之间的交易?

PS稍后,我必须输入两个日期和用户名,然后仅针对某些用户名在两个日期之间打印事务。 所以,如果有人可以帮助我... :)

您可以尝试这样的事情:

from csv import reader
from io import StringIO  
from datetime import datetime


text = '''1:5:iznos:15.02.2017.:usser
2:2:iznos:17.02.2017.:usser2
3:3:iznos:3.04.2017.:usser2
4:3:iznos:3.04.2017.:useer
5:7:iznos:5.05.2017.:usser2
6:3:iznos:16.06.2017.:usser3
7:8:iznos:18.06.2017.:usser'''


from_date = datetime(2017, 4, 3)
to_date = datetime(2017, 5, 5)

# with open('data.txt', 'r') as file
with StringIO(text) as file:

    data = reader(file, delimiter=':')

    for line in data:
        date = datetime.strptime(line[3], '%d.%m.%Y.')

        if from_date <= date <= to_date:
            print(line)

首先,您需要读取数据; 其次,您需要从每一行中提取日期; 第三,您需要检查日期是否在所需范围内; 所以解决方案是:

with open('transactions.txt') as f:
    for line in f:
        l_date = date.strptime(line.split(':')[3], "%d.%m.%Y.")
        if date1 < l_date < date2:
            print line

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM