2017-06-18 52 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)