python - 如何在 JSON 文件中找到 2 个日期之间的间隔
问题描述
如何在 JSON 文件中找到 2 个日期之间的间隔[{"start":"2004-09-8","end":"2005-7-5"}, {"start":"1999-9-7","end":"2000-5-3"}]
[{"start":"2004-09-8","end":"2005-7-5"},{"gap":how many days gap"{"start":"1999-9-7","end":"2000-5-3"}]
import json
from collections import defaultdict
res = defaultdict(list)
with open(r'/home/vijaya/Documents/task43.json','r') as list:
data = json.load(list)
print(data)
解决方案
你可以只使用datetime
并检查timedelta
类似的东西,
>>> import datetime
>>> data = [{'start': '2004-09-8', 'end': '2005-7-5'}, {'start': '1999-9-7', 'end': '2000-5-3'}]
>>>
>>>
>>> for d in data:
... start = datetime.datetime.strptime(d['start'], '%Y-%m-%d')
... end = datetime.datetime.strptime(d['end'], '%Y-%m-%d')
... d['gap'] = '{} days'.format((end-start).days)
...
>>> data
[{'start': '2004-09-8', 'end': '2005-7-5', 'gap': '300 days'}, {'start': '1999-9-7', 'end': '2000-5-3', 'gap': '239 days'}] # gap is in days
我真的建议您使用pendulum进行日期时间操作。这是一个很棒的模块:)
根据最近的要求,我更新了代码,
$ cat datediff.py
from datetime import datetime as dt
data = [ { "start":"2002-08-01", "end":"2004-09-12" }, { "start" :"1998-09-12", "end" : "2001-10-11" }, { "start":"1997-08-01", "end":"1998-01-12" }, { "start" :"1995-09-12", "end" : "1997-7-11" } ]
req_data = []
for first, second in zip(data, data[1:]):
days = (dt.strptime(first['start'], '%Y-%m-%d') - dt.strptime(second['end'], '%Y-%m-%d')).days
if days <= 0:
days = (dt.strptime(second['start'], '%Y-%m-%d') - dt.strptime(first['end'], '%Y-%m-%d')).days
req_data.append(first)
req_data.append({'days': days})
req_data.append(second)
print(req_data)
输出:
$ python datediff.py
[{'start': '2002-08-01', 'end': '2004-09-12'}, {'days': 294}, {'start': '1998-09-12', 'end': '2001-10-11'}, {'days': 243}, {'start': '1997-08-01', 'end': '1998-01-12'}, {'days': 21}, {'start': '1995-09-12', 'end': '1997-7-11'}]
推荐阅读
- c# - 使用 Object 作为数据集并通过 DataTable 加载来创建报告
- replace - 如何替换带引号的表达式中子字符串的最后一个实例
- c - 通过 macOS 终端编译,致命错误:stdio.h: No such file or directory
- c - Ruby 中的 ntohl() 和 htonl()?
- graphics - 如何在opengl中使物体相对于x轴旋转
- android - how to set 2 word in 2 line in android studio
- nativescript - Xamarin 与 NativeScript 的性能对比
- node.js - Axios.Post 没有向处理 node.js 的 mongodb 发送数据
- r - 如何使用鼠标或 R 中的另一个包从多个变量中提取几个估算值到单个数据集中?
- php - 如何将 SQL 数据增益从 php 脚本发送到 python 脚本?