2017-06-18 50 views
0

我有“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() 

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

P.S后来,我必须输入两个日期和用户名,然后打印仅适用于特定的用户名两个日期之间的交易。因此,如果有人也可以帮助我与... :)

+0

你到目前为止尝试过什么?请张贴代码:) –

+0

@RaquelGuimarães 我想这样的事情,但它当然 的doesent工作,\t'ELIF日期1 <日期2: \t \t开放( 'transakcije.txt')的交易: \t \t \t对于i在交易: \t \t \t \t反式= i.strip( “\ n” 个)分割( “:”) \t \t \t \t如果反式[3]> =日期1和反式[3] <= DATE2: \t \t \t \t \t打印(反式[0],反式[1],反式[2],反式[3],反式[4])' –

回答

0

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

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 
+0

Błotosmętek,就是这样,谢谢。你能帮我以某种方式为特定用户打印行吗? –

0

你可以尝试这样的事:

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)