计算python中的日期出现次数?

时间:2017-04-04 16:55:05

标签: python tkinter counter

我目前正在尝试计算聊天记录中日期的次数,例如我正在阅读的文件可能如下所示:

*username* (mm/dd/yyyy hh:mm:ss): *message here*

但是我需要将日期从我目前视为一个的时间开始分割。我目前正在努力解决我的问题所以任何帮助表示赞赏。下面是我正在使用的一些示例代码,用于尝试获取日期计数。我目前正在使用一个计数器,但我想知道是否有其他方法来计算日期。

filename = tkFileDialog.askopenfile(filetypes=(("Text files", "*.txt") ,))
mtxtr = filename.read()
date = []
number = []
occurences =  Counter(date)
mtxtformat = mtxtr.split("\r\n")
print 'The Dates in the chat are as follows'
print "--------------------------------------------"
for mtxtf in mtxtformat:
    participant = mtxtf.split("(")[0]
    date = mtxtf.split("(")[-1]
    message = date.split(")")[0]
    date.append(date1.strip())
for item in date:
    if item not in number:
        number.append(item)
for item in number:        
    occurences =  date.count(item)
    print("Date Occurences " + " is: " + str(occurences))

2 个答案:

答案 0 :(得分:0)

最简单的方法是使用正则表达式并记录日志文件中的日期模式。它也会更快。

答案 1 :(得分:0)

如果您知道日期和时间将在消息开头的括号中括起来(即在包含日期和时间之前没有括号(...):):

*username* (mm/dd/yyyy hh:mm:ss): *message here*

然后你可以根据parens提取:

import re

...

parens = re.compile(r'\((.+)\)')
for mtxtf in mtxtformat:
    match = parens.search(mtxtf)
    date.append(match.group(1).split(' ')[0])

...

注意:如果消息本身包含parens,则可能不仅仅需要匹配(mm / dd / yyyy hh:mm:ss)。假设在您的日期时间信息之前没有包含在parens中的信息(对于当前行),执行match.group(1).split(' ')[0]仍会提供您正在寻找的信息。

注意2:理想情况下,如果当前行不包含有用信息,请将其包含在try-except中以继续到下一行。