如何将包含日期的列表拆分为每周分区

时间:2015-10-20 06:51:34

标签: python datetime

我有一个带有推文集合的csv文件。我想将我的收藏分成每周分区。我使用循环循环终止循环的所有试验,python工作,但它不想完成。有人可以向我解释一下我的错误是什么?我也尝试过一段时间(虽然是sortr!='')没有运气:

import csv
from datetime import datetime, timedelta
from collections import defaultdict

csv1 = open('../archiviato.csv', 'r')
tabula=csv.reader(csv1)
sortr= sorted(tabula)
delta_days = 7
c = 1
months= defaultdict(list)
weeke=defaultdict(list)
weeks = []



for j in sortr:
    tweetID = j[0]
    timestamp = j[2]
    times = datetime.strptime(timestamp, "%Y-%m-%d %H:%M:%S")
    trmonth = times.month
    trime = times.day
    months[trmonth].append(j)
    for i in sortr:
        tweetID2 = i[0]
        timestamp2 = i[2]
        times2 = datetime.strptime(timestamp, "%Y-%m-%d %H:%M:%S")
        trime2 = times2.day
        if tweetID != tweetID2 and timedelta(trime2 - trime) <= timedelta(days = delta_days):
            if weeks == []:
                a = i,j
                c = 1
                weeks.append(a)
                weeke=[c].append(a)
                print tweetID
                print tweetID2
            else:
                c = 1
                weeke=[c].append(i)
                print tweetID2
        else:
            c+=1
            j = i
            weeks = []
            continue

1 个答案:

答案 0 :(得分:3)

无法提供完整的解决方案,没有csv示例和代码段太大。但是如果你想“将日期列表分成每周分区”,我建议:

使用date.isocalendar(或您的datetime.isocalendar)来确定一周。创建一个以(Year, Week-of-Year)元组为键的字典,值为(timestamp, tweetID)的元组列表。

填充此词典和每个列表后,您可以使用elem[1](时间戳,元组中的第2项)作为键对每个列表进行排序。要检索完整的dict,请通过以下方式检索:

for year_week_tuple in sorted(all_tweets):  # sorts on keys and returns keys
    print 'Year: %d, Week #: %d' % (year_week_tuple[0], year_week_tuple[1])
    for timestamp, tweetID in sorted(all_tweets[year_week_tuple]):
        print 'Tweet time: %s, TweetID: %s' % (timestamp, tweetID)
    print 'End of week'