Проверка, отличается ли запрос JSON от предыдущего запроса (данные были обновлены) в python - PullRequest
1 голос
/ 05 апреля 2020

Я читаю данные из файла json, используя запросы ... и wi sh, чтобы сохранить эти значения в файле Excel. Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю интервал, с которым обновляется этот json файл, поэтому трудно сделать мой планировщик идеальным ... В итоге я получаю повторяющиеся значения. Кажется, я не могу найти никаких библиотек, которые могли бы проверить меня.

В этом сценарии я получаю дубликат в 1:10 и wi sh, чтобы не добавлять его, так как он совпадает с тот в 1:05. В некоторых случаях может быть более одного дубликата за раз, и я хочу проверить это, прежде чем он будет добавлен, а не добавлен, а затем удален.

Есть ли более простой способ решения этой проблемы? ?

Пример:

timestamp   stock  buy  sell 
   1:05       1     10    10
   1:10       1     10    10
   1:15       1     20    16

def do_this():
    previous_data = []
    try:
        response = requests.get(JSON_LINK)
        previous_data = response.content
    except Exception:
        print('Failed in main')


    if(previous_data == response.content):
        print('same data')
    else:
        print('new data')

Я понял, что это не сработает при previous_data = [] всегда будет принимать любой текущий ответ, а не предыдущие данные ответа.

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

Учитывая, что JSON может иметь одинаковые значения в разное время.
Существует в основном два способа проверить равенство объектов: один - проверка char на char, а другой - сопоставление значений ha sh. .

Итак, одним из подходов будет создание HashSet. Всякий раз, когда приходит новый ответ, вы вычисляете га sh и проверяете, существует этот ха sh или нет. Если существует, просто отбросьте ответ, если он не существует, вы сохраняете значение ha sh в hashSet, а значение ответа - в своем Excel.
ПРИМЕЧАНИЕ. Соответствие Ha sh требует меньше времени, чем совпадение строк.

0 голосов
/ 05 апреля 2020

Вы можете попробовать поискать в существующих данных ту же самую запись, что и у вас. Если запись существует, то это обновление, если не удаление.

Вы также можете кэшировать предыдущий запрос. Когда приходит новый запрос, сравните его с кешем и удалите дубликаты. Этот подход работает, только если вы заботитесь о предыдущих и следующих запросах.

«Я не знаю интервал, с которым обновляется этот json файл» - вы можете добавить пользовательский заголовок к запросам со временем запрос был сохранен на этот раз как «последний». Когда поступит другой запрос, проверьте значение времени заголовка, если оно старше, чем последнее, выбросьте его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...