我有一个带有推文集合的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
答案 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'