如何在 Python 中获取特定日期范围的数据?

我从互联网创建了一个数据集:


我正在使用基于我的本地文件(JSON 输出)的以下代码:


Validdata = []

for new in Sampledata:

    print(str(new['title']) + " | " + str(new['published'][:10]))

    Validdata.append(new) 

我的输出:


Amnesia: Collection Hits Xbox One Next Week | 2018-08-27

(USA) Building Safety Technician | 2018-08-27

SONY VAIO VPCCA15FG DRIVERS DOWNLOAD | 2018-08-26

Google Alert - windows 10 | 2018-08-27

如果我们看到我有这样的数据,每个标题的末尾都有日期,我只想打印出介于特定日期范围之间的文章:


我尝试使用它进行比较,但收到此错误消息:


Startdate = '2018-09-01'

Enddate = '2018-10-01'

underDaterange = []

for value in Sampledata['title']  and Sampledata['published'][:10] in range [Startdate:Enddate]:

       underDaterange.append(value)

错误信息:


 TypeError: list indices must be integers or slices, not str


慕神8447489
浏览 419回答 2
2回答

鸿蒙传说

看看内置的 datetime.strptimefrom datetime import datetimedates = ('2018-01-01', '2018-08-27', '2018-09-01', '2018-10-01')format = '%Y-%m-%d'start_dt = datetime.strptime('2018-08-01', format)end_dt = datetime.strptime('2018-09-30', format)[date for date in dates if datetime.strptime(date, format) > start_dt and datetime.strptime(date, format) < end_dt]# ['2018-08-27', '2018-09-01']另外,请检查您的变量命名约定和缩进的使用。

慕尼黑5688855

您的错误消息指出 use 正在使用字符串作为范围函数中的索引。创建日期对象:from datetime import datestart_date = date(2017, 1, 1)end_date = date(2018, 10, 4)在 range 函数中使用日期作为 int:range(int((end_date - start_date).days))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python