У меня есть множество тестовых случаев / событий (файлов JSON), которые мне нужно сравнить и показать любые изменения.Итак, я дважды запустил события и заменил все изменения регулярным выражением.Мне нужно написать полный скрипт на Python, который при запуске проверяет все пары ключ / значение и дает мне знать, что изменилось.Я много искал, но не могу найти то, что искал.
Ниже приведен фрагмент моих файлов JSON, оригинал и с регулярным выражением:
{
"_index": "activities-2019-09-05-000001",
"_type": "ActivityRecordsType",
"_id": "E0E6DD54-9AF1-DAE6-A80D-BC58C52F14C1::96864DBA-E8C1-44DC-B083-502679E35167",
"_version": 1,
"_score": null,
"_source": {
"Destination_File_Drive_Encryption": "No Encryption Detected",
"Source_File_Hash_Digest": "4bfa69b2d340292d48842b84352ba9d3aa49e077"
}
}
{
"_index": "activities-\\d{4}-\\d{2}-\\d{2}-000001",
"_type": "ActivityRecordsType",
"_id": "E0E6DD54-9AF1-DAE6-A80D-BC58C52F14C1::\\w{8}-\\w{4}-\\w{4}-\\w{4}-\\w{12})",
"_version": 1,
"_score": null,
"_source": {
"Destination_File_Drive_Encryption": "No Encryption Detected",
"Source_File_Hash_Digest": "\\w{40}"
}
}
Может ли кто-нибудь дать мне правильное решение этой проблемы?Конечно, я мог бы написать функцию, чтобы определить, равны ли они в соответствии с ключами каждого значения.Но я думаю, что мог бы быть лучший способ сделать это, особенно с вовлеченным регулярным выражением.Примерно так:
def match_dicts(self, baseline_event, actual_event):
match = False
mismatch_count = 0
for baseline_key in baseline_event:
#print baseline_key
if baseline_key in actual_event:
#print baseline_key
base_txt = str(baseline_event[baseline_key])
actual_txt = unicode(actual_event[baseline_key])
# Checking for plain value attribute
if base_txt == actual_txt:
match = True
# Checking for the non-empty attribute
elif "[ne]" in base_txt:
if actual_txt is not None:
match = True
else:
mismatch_count += 1
Путем ввода идентификаторов, таких как [e]
и [ne]