查找最后一个唯一标识符并检查一个数字,然后将时间与当前tim进行比较

2024-03-29 08:49:22 发布

您现在位置:Python中文网/ 问答频道 /正文

@软件

在如下所示的csv文件中,我尝试编写一些代码来循环查找最后一个惟一类(惟一类基于元素0和元素1合并在一起),在我的示例中,最后一个惟一类是:Class02CD1,这将等于:Class02CD1

然后它需要查看uniqueclass中的学生的元素4(在这个示例中只有2个学生,如果其中任何一个学生中存在一个数字,那么它需要从元素2获取时间并将其与当前时间进行比较,如果当前时间在给定时间后30分钟或更长时间,它应该打印单词“Late”

CSV文件

uniq1,uniq2,three,four,five,six
Class01,CD2,data,data,,data
Class01,CD2,data,data,22,data
Class01,CD2,data,data,,data
Class01,CD2,data,data,4,data
Class02,CD3,data,data,,data
Class02,CD3,data,data,,data
Class02,CD3,data,data,,data
Class02,CD3,data,data,,data
Class02,CD3,data,data,,data
Class02,CD3,data,data,3,data
Class02,CD3,data,data,,data
DClass2,DE2,data,data,133,data
DClass2,DE2,data,data,24,data
Class02,CD1,13:01,data,,data
Class02,CD1,13:05,data,1,data
  • 循环遍历唯一元素以查找最后一个类。你知道吗
  • 检查该唯一类中是否存在数字。你知道吗
  • 如果数字存在,那么它应该从元素2得到时间
  • 如果这个数字存在,并且我们有一个时间,那么我们应该将它与当前时间进行比较。你知道吗
  • 如果当前时间是30分钟或在最后一节课的时间之后,那么它应该打印“迟到”,否则什么也不做。你知道吗

任何人都知道如何解决这个问题,我完全迷路了,不知道怎么做。你知道吗

打印

Class02CD1
Current: 2013-11-11 12:07:37.635000
Fetched: 2013-11-11 13:05:00
Calculated: 1382.61666667
late

Tags: 文件元素示例data时间数字学生cd1
2条回答

首先遍历文件并找出最后一行上的类,然后再次遍历文件,现在如果给定行上的类名等于存储的类名,则在那里应用条件并使用datetime模块找出时间差。你知道吗

from datetime import datetime
import csv
import time
with open('abc1') as f:
    reader = csv.reader(f, delimiter=',')
    for line in reader:
        pass
    class_name = ''.join(line[:2]) #save the name on last line
    print class_name
    f.seek(0)           # Rest the file pointer t o the start of the file
    for line in reader:
        cls_name = ''.join(line[:2])
        if cls_name == class_name:
            if line[-2]:
                current_dtime = datetime.now()
                fetched_time = datetime.strptime(line[2], '%H:%M')
                fetched_time = datetime(year=current_dtime.year,
                                        month = current_dtime.month,
                                        day = current_dtime.day,
                                        hour = fetched_time.hour,
                                        minute = fetched_time.minute
                                        )
                if ((current_dtime - fetched_time).seconds/ 60.0) > 30.0:
                    print "late"

这是最后时间比较部分的答案。你知道吗

import csv

dict = {}
key = False
with open('test.csv', mode='r') as infile:
    reader = csv.reader(infile,)
    first = False
    for row in reader:
        if first:
            first = True
            continue
        key = row[0]+row[1]
        if key in dict:
            dict[key].append(row)
        else: 
            dict[key] = [row]
    print dict

if(key):
    for row in dict[key]:
        # do time comparison
        pass

相关问题 更多 >