Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
排序日期文件python_Python_Datetime_Python 2.7 - Fatal编程技术网

排序日期文件python

排序日期文件python,python,datetime,python-2.7,Python,Datetime,Python 2.7,我有一个文件,其中包含此表单中的日期和任务 (datetime.datetime(2014, 5, 20, 0, 0), 'laundry') (datetime.datetime(2014, 6, 1, 0, 0), 'exam ') 如何以这种格式显示某个日期内到期的任务(例如一周内到期的任务) 20/05/2014: laundry 谢谢假设您的数据是这样的元组列表: date_list = [(datetime.datetime(2014, 5, 20, 0, 0), 'laundr

我有一个文件,其中包含此表单中的日期和任务

(datetime.datetime(2014, 5, 20, 0, 0), 'laundry')
(datetime.datetime(2014, 6, 1, 0, 0), 'exam ')
如何以这种格式显示某个日期内到期的任务(例如一周内到期的任务)

20/05/2014: laundry

谢谢

假设您的数据是这样的元组列表:

date_list = [(datetime.datetime(2014, 5, 20, 0, 0), 'laundry'), (datetime.datetime(2014, 6, 1, 0, 0), 'exam '), (datetime.datetime(2014, 4, 20, 0, 0), 'grocery'), (datetime.datetime(2013, 5, 20, 0, 0), 'tv')]
您可以通过执行以下操作获得基于日期的排序列表:

sorted_dates = sorted(date_list, key=lambda x: str(x[1]), reverse=True)
这里,将日期的字符串表示形式作为键传递给sorted函数,该函数有效地将排序日期转换为字符串排序。这将为您提供:

[(datetime.datetime(2013, 5, 20, 0, 0), 'tv'), (datetime.datetime(2014, 5, 20, 0, 0), 'laundry'), (datetime.datetime(2014, 4, 20, 0, 0), 'grocery'), (datetime.datetime(2014, 6, 1, 0, 0), 'exam ')]
[('20/05/13', 'tv'), ('20/05/14', 'laundry'), ('20/04/14', 'grocery'), ('01/06/14', 'exam ')]
您可以使用以下方法将日期格式化为所需格式:

这给了你:

[(datetime.datetime(2013, 5, 20, 0, 0), 'tv'), (datetime.datetime(2014, 5, 20, 0, 0), 'laundry'), (datetime.datetime(2014, 4, 20, 0, 0), 'grocery'), (datetime.datetime(2014, 6, 1, 0, 0), 'exam ')]
[('20/05/13', 'tv'), ('20/05/14', 'laundry'), ('20/04/14', 'grocery'), ('01/06/14', 'exam ')]
您的最终输出可通过循环格式化的_日期获得,如下所示:

哪张照片

20/05/13: tv
20/05/14: laundry
20/04/14: grocery
01/06/14: exam
如果数据已排序,则可以跳到步骤2

为了在一周内完成任务,您可以使用和函数的组合


说明:datetime.datetime.now提供今天的日期。datetime.datetime.now+datetime.timedeltadays=7表示从今天起7天的日期。因此,上面的筛选函数会在排序日期列表中查找今天之后、7天之后(即一周内)的任何日期。

如果您的任务位于名为mytasks.txt的文件中,这将列出未来x天内设置的所有任务

注意:此代码正在使用,如果您不信任您的输入,则不应使用此代码

from datetime import timedelta
import datetime

# Change 7 to your prefered number of days
limit = datetime.datetime.now() + timedelta(days=7)
with open('mytasks.txt') as ifile:
    for line in ifile:
        day, task = eval(line)
        # This breaks the loop once a day further ahead arises
        if day > limit:
            break
        print '{}: {}'.format(day.strftime('%d/%m/%Y'), task)
鉴于这一投入:

(datetime.datetime(2014, 4, 10, 0, 0), 'chill')
(datetime.datetime(2014, 4, 12, 0, 0), 'out')
(datetime.datetime(2014, 5, 20, 0, 0), 'laundry')
(datetime.datetime(2014, 6, 1, 0, 0), 'exam ')
这将是输出:

10/04/2014: chill
12/04/2014: out

我强烈建议您使用,这是一个用于数据分析的python库。使用此库,您可以从不同的文件格式中读取csv,并使用TimeSeries类执行所有类型的分析和操作,包括问题中的日期筛选

例如,如果“ts”是timeseries对象,则要选择时间范围:

hour = ts.index.hour
selector = ((10 <= hour) & (hour <= 13)) | ((20 <= hour) & (hour <= 23))
data = ts[selector]

文件中的行是否按日期时间顺序排序?是的,它们按日期时间顺序排序。问题的标题是关于排序日期,但问题的正文是关于显示日期。有一个不匹配…非常感谢!还有一个问题,如果我想显示下周到期的任务,我应该怎么做@shaktimaan@user3504813更新了我的答案。
hour = ts.index.hour
selector = ((10 <= hour) & (hour <= 13)) | ((20 <= hour) & (hour <= 23))
data = ts[selector]