Как сопоставить дату и любое время в файле JSON? - PullRequest
0 голосов
/ 27 февраля 2019

Я посмотрел на похожие вопросы и заставил их работать в строках, но не могу понять, как сделать то же самое для файла json.

Я хотел бы посчитать каждый тип активности на каждую дату в jsonфайл.Нижняя строка работает отлично, однако я не знаю всех значений времени, поэтому я бы хотел сопоставить любое время для каждой даты.Я попытался использовать fnmatch, но он не возвращает никаких значений.

c = Counter(
    item['Activity'] for item in json_data
    if item['DateTime'] == '18/02/2019 09:14'
)

Код, который я использую для сопоставления с образцом, приведен ниже.

from collections import Counter
    import json
    import fnmatch
    import re

with open('dataset_3.json', 'r') as json_file:
    json_data = json.load(json_file)  # loads json data
    c = Counter(
        item['Activity'] for item in json_data
        if item['DateTime'] == fnmatch.filter(item, '18/02/2019' + ' *')
    )
    print(c)

1 Ответ

0 голосов
/ 04 марта 2019

Модуль fnmatch предназначен для сопоставления имен файлов с использованием глобусов в стиле UNIX.Для сопоставления с образцом общего назначения регулярные выражения обычно являются лучшей ставкой.

Однако, поскольку в этом случае вы просто сопоставляете начало item['DateTime'], str.startswith() метод является очевидным выбором:

c = Counter(
    item['Activity'] for item in json_data
    if item['DateTime'].startswith('18/02/2019 ')
)
...