Python日期开始增加

时间:2013-12-13 07:28:49

标签: python regex file date time

关于从文件开始的日期的问题,如何从文件开始给出日期,将日期增加一天。

我的文件如下:

13.12.2013.   

06:00 ZMBT televoting
06:05 Madhubala, igrana serija, 138. epizoda, r.
06:50 Tajne, igrana serija, 55. epizoda, r.
07:30 Naša kuhinja
08:25 TV izlog
08:45 Bratzillaz, crtani film, 7. i 8. epizoda
08:55 ZMBT televoting
09:00 Prva dama, igrana serija, 89. epizoda
10:00 Štrumfovi, crtani film, 20. epizoda
10:30 Pčelica Maja, crtani film, 5. epizoda
10:52 Monster high, crtani film, 404. i 405. epizoda 
10:55 Monsuno, crtani film, 20. epizoda
11:20 TV izlog 
11:40 Tokovi novca
11:45 Vijesti           
11:57 Biometeorološka prognoza
12:00 Madhubala, igrana serija, 138. epizoda, r.
12:50 Prva dama, igrana serija, 90. epizoda 
13:50 Tajne, igrana serija, 55. epizoda
14:40 TV izlog
15:15 ZMBT televoting 
15:20 Muzički program
15:45 ZMBT televoting 
15:50 Karadayi, igrana serija, 68. epizoda 
16:50 Po spisku, talk show
17:45 Krv nije voda, serijski program, 107. epizoda
18:39 International Health
18:49 Domaćica Ovako
19:00 Vijesti u 7, informativni program
19:28 Vremenska prognoza
19:29 Biometeorološka prognoza
19:31 Sport
19:38 Stanje na putevima 
19:45 Tokovi novca
19:55 ZMBT televoting
20:00 Kolo sreće
20:05 Madhubala, igrana serija, 139. epizoda
21:05 ZMBT 6, show uživo
23:55 Sport centar
00:00 Dolina vukova, igrana serija, 97. i 98. epizoda   
Reprizni program Hayat TV-a    
01:55 ZMBT televoting
02:00 Vijesti u 7, informativni program
02:30 ZMBT 6, show
04:45 Muzički program

14.12.2013. 

06:00 ZMBT televoting
06:05 Madhubala, igrana serija, 139. epizoda, r.
06:50 Takešijev dvorac, zabavno-sportski TV show  

问题是当日期在午夜过去的同一天时,我怎样才能在00:00通过时从文件中获取下一个日期。 我的代码示例:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import os
import sys
import re
import time 
import glob
import logging
from datetime import datetime
import datetime


def get_date_time():

    # Values for date 
    # Example         : '''YYYY-MM-DD, YYYY-DD-MM, DD MM YYYY, MM DD YYYY'''
    # Example of time : '''(00:00:00, 00:00, 0:00 -- 24 Time) | (00:00, 0:00 -- AM, PM)'''
    ######################################################################################
    #Let's add some date/time examples

    ######################################################################################
    # TS -> 05h 
    # Calculating time 
    # Open File for checking
    input_file = open('date.txt','r')

    # Open Output file for writting
    output     = open('date_change.txt','w')

    for line in input_file:
        # Let's take date with regex on example --> 1/6/2014 (MM-DD-YYYY), Time --> 24h (0:00| 00:00)

        if re.search(r'\d{2}.\d{2}.\d{4}', line):

            line_date1  = re.findall(r'\d{2}.\d{2}.\d{4}',line)[0]

        else:

            if not re.search(r'\d{2}.\d{2}.\d{4}',line):
                line_date = ''
                print line_date
                # Start

        if re.search(r'\d{2}:\d{2}.*',line):
            line_start = re.findall(r'\d{2}:\d{2}',line)[0]
            var2 = line_start+' '+line_date1

            var = line_start

            if var > '00:00':

                var1 = var
                Date = datetime.datetime.strptime(line_date1, "%d.%m.%Y")
                EndDate = Date + datetime.timedelta(days=1)
                print str(EndDate) + ' '+var1

            else:
                Date = datetime.datetime.strptime(line_date1, "%d.%m.%Y")

                print str(Date)+' '+var1

get_date_time()

如果你能就这个问题给我一些帮助。

输出将是这样的:

13.12.2013. 06:00 ZMBT televoting
13.12.2013. 06:05 Madhubala, igrana serija, 138. epizoda, r.
13.12.2013. 06:50 Tajne, igrana serija, 55. epizoda, r.
13.12.2013. 07:30 Naša kuhinja
13.12.2013. 08:25 TV izlog
13.12.2013. 20:05 Madhubala, igrana serija, 139. epizoda
13.12.2013. 21:05 ZMBT 6, show uživo
13.12.2013. 23:55 Sport centar

14.12.2013. 00:00 Dolina vukova, igrana serija, 97. i 98. epizoda      
14.12.2013. 01:55 ZMBT televoting
14.12.2013. 02:00 Vijesti u 7, informativni program
14.12.2013. 02:30 ZMBT 6, show
14.12.2013. 04:45 Muzički program

这是我的结果,我的意思是代码,它只是添加一些行。伙计们求救。如果有人需要帮助,这是我的代码:

def get_date_time():

    # Values for date 
    # Example         : '''YYYY-MM-DD, YYYY-DD-MM, DD MM YYYY, MM DD YYYY'''
    # Example of time : '''(00:00:00, 00:00, 0:00 -- 24 Time) | (00:00, 0:00 -- AM, PM)'''
    ######################################################################################
    #Let's add some date/time examples

    ######################################################################################
    # TS -> 05h 
    # Calculating time 
    # Open File for checking
    input_file = open('date.txt','r')

    # Open Output file for writting
    output     = open('date_change.txt','w')
    date = ""
    var  = ""

    for line in input_file:
        # Let's take date with regex on example --> 1/6/2014 (MM-DD-YYYY), Time --> 24h (0:00| 00:00)
        if re.search(r'\d{2}.\d{2}.\d{4}.',line):
            line_date = re.findall(r'\d{2}.\d{2}.\d{4}.',line)[0]
            date = line_date
            x    = date

            print date

        if re.search(r'\d{2}:\d{2}.*', line):
            line_start = re.findall(r'\d{2}:\d{2}', line)[0]
            line_title = re.findall(r'\s\w*',line)[0]
            global var_x
            var_x     = var + line_start
            var2 = line_title


            current_date = datetime.datetime.strptime(x, '%d.%m.%Y.')
            new_date     = current_date + datetime.timedelta(days=1)


            if var_x < '06:00':
                var1 = var_x

                print >> output, str(new_date)+' '+var1+' '+var2+'\n'
            else:
                print >> output, str(current_date)+' '+var_x+' '+var2+'\n'






get_date_time()

1 个答案:

答案 0 :(得分:0)

新功能(此功能可捕获日期并适当增加日期)

import re
import datetime

def get_date_time():
    input_file = open('date.txt','r')
    output = open('date_change.txt','w')
    date = ""
    currentDay = 1
    currentHour = 0
    dateobj = datetime.datetime.now()
    for line in input_file:
        if not line.isspace():
            if re.match(r"\d{2}\.\d{2}\.\d{4}\.\s*", line):
                dateset = line.split('.')
                d = dateset[0]
                currentDay = dateset[0]
                m = dateset[1]
                y = dateset[2]
                dateobj = datetime.datetime.strptime(d+"."+m+"."+y, "%d.%m.%Y")
                date = dateobj.strftime("%d.%m.%Y")
            else:
                h = re.findall(r"(\d{2}):\d{2}", line)
                if h:
                    if h[0] < currentHour:
                        dateobj += datetime.timedelta(days=1)
                        date = dateobj.strftime("%d.%m.%Y")
                    currentHour = h[0]

                output.write(date + " " + line)
                print date + " " + line

    output.close()
    input_file.close()          

get_date_time()

旧(没想到你试图人为增加日期)

不确定为何使datetime复杂化?也许你正在努力建造比我在那里看到的更大的东西。

然而:

import re

def get_date_time():
    input_file = open('date.txt','r')
    output = open('date_change.txt','w')
    date = ""
    for line in input_file:
        if not line.isspace():
            if re.match(r"\d{2}\.\d{2}\.\d{4}\.\s*", line):
                date = line.rstrip()
            else:
                output.write(date + " " + line)

    output.close()
    input_file.close()          

get_date_time()
相关问题