色粉盒撒娇 发表于 2017-5-5 09:14:49

用Python连续取出7天登陆时间角色id

#!/usr/bin/python
# -*- coding:utf-8 -*-
#
# @author: king
# @date:   2010-01-05
#
# @notes:
#
# 注意代码中的login_info.txt格式为id,login_date
# login_date格式为yyyy-mm-dd
# 因为在导出数据的时候已经全部group by好了,所以数据都是唯一的
# 这也意味着,这个小程序也是自己先从各种类型数据库按这格式导出数据并保存为文本
# 用Python的优点就是开发快速,如果不想写SQL游标的童鞋们,也可以用这方案
#
from collections import defaultdict as dd
import datetime
def diffdate(strdate1, strdate2):
    date1 = strdate1.split('-')
    date2 = strdate2.split('-')
    d1 = datetime.datetime(int(date1), int(date1), int(date1))
    d2 = datetime.datetime(int(date2), int(date2), int(date2))
    return (d1 - d2).days

role_id = dd(list)
for line in open('login_info.txt', 'r').xreadlines():
    content = line.split(",")
    role_id].append(content.strip())

login_days = 7
role_login = dd(int)
for role_id, login_dates in role_id.iteritems():
    for i, login_date in enumerate(login_dates):
      if diffdate(login_date, login_dates) != 1\
      and role_login < login_days:
            role_login = 1
      else:
            role_login += 1

      # 如果偷懒的话,这里把注释打开吧,这样子就不用再往下查找了
      #if role_login == login_days:
      #    break

for role_id, login_num in role_login.iteritems():
    if login_num >= login_days:
      print role_id, login_num
页: [1]
查看完整版本: 用Python连续取出7天登陆时间角色id