Как отфильтровать последние пункты каждой недели?
У меня есть данные JSON, который содержит поле даты и времени в формате ISO 8601. Я хочу отфильтровать все вещи, которые произошли в выходные. Как я могу это сделать?
2 ответа
Если вы используете UTC(!) Datetime и jq
связан с libc
который поддерживает strftime()
тогда вы можете использовать что-то вроде этого:
file.json:
{
"name": "foo",
"date": "2018-02-11T12:00:00Z"
}
{
"name": "bar",
"date": "2018-02-12T12:00:00Z"
}
jq
команда:
jq '.[]|select(.date|fromdateiso8601|strftime("%w") as $d|$d=="7" or $d=="0")' file.json
7
стоит на субботу, 0
на воскресенье.
Выход:
{
"name": "foo",
"date": "2018-02-11T12:00:00Z"
}
Бесстыдная реклама.
Вы можете использовать версию jf, которая поддерживает все библиотеки Python. Для субботы и воскресенья:
pip install jf
jf 'filter(date(x.date).weekday() > 4)' file.json