Python - Сравните 2 разных формата вывода - Логика - PullRequest
0 голосов
/ 16 мая 2018

У меня есть случай программирования, который поставил меня в тупик.Я не обязательно ищу код - я ищу логический совет, для которого я в растерянности.

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

Это для регрессионного теста.У меня есть два файла с одинаковыми данными в двух очень разных форматах.Мне нужно сравнить данные и автоматизировать процесс.Я буду беспокоиться о 'diff' на более позднем этапе.Это не должно быть слишком сложно, если я могу получить данные из обоих файлов, которые можно сравнить.

Файл 1 содержит данные JSON.В файле есть другой мусор, но его можно удалить.Вот как выглядят данные:

{
"Chan-1" : [ {
"key1" : "val1",
"key2" : val2,
"key3" : val3,
}, {
"key1" : "val1",
"key2" : val2,
"key3" : val3,
} ]
}

Файл 2 по сути имеет то, что я могу расшифровать как список python с элементами.Каждый элемент имеет данные в формате key=value, разделенные запятыми в скобках.

[
spacecraft.telemetry.channel(key1=val1,key2="val2",key3=val3),
spacecraft.telemetry.channel(key1=val1,key2="val2",key3=val3)
]

Каждый блок в одном файле соответствует одному в другом, и, по сути, если он будет различий,Другими словами:

{
"key1" : "val1",
"key2" : val2,
"key3" : val3,
}

из файла 1 будет (или должен) иметь те же пары значений ключа, что и файл 2:

(key1=val1,key2="val2",key3=val3)

Порядок также аналогичен.

Оба файла содержат множество пар ключ-значение для объекта "Chan-1", и я урезал количество данных, например, ради.В каждом блоке около 16 пар значений ключа и около 400 блоков.

Я попытался поработать над файлом 2, чтобы он выглядел как данные JSON.Я попытался поработать над файлом 1, чтобы он выглядел больше как файл 2. Я также попытался проанализировать оба файла как третий формат в целом.Но я не продвинулся далеко ни с одной концепцией - и что-то подсказывает мне, что я что-то упустил, что это не должно быть так сложно, учитывая, что у нас уже есть один файл в JSON.

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

Спасибо.

1 Ответ

0 голосов
/ 16 мая 2018

Для каждого файла:

  • извлечение «списка» объектов
  • преобразование каждого объекта в списке в словарь
    • для файла 1, этот шагв основном это «конвертировать JSON в dict»
    • для файла 2, это включает в себя извлечение только строк key=value, разбиение на = и преобразование результата в dict с помощью словарного понимания.

На данный момент у вас есть два списка словарей.Ваш вопрос кажется указывает на то, что вы можете предполагать, что списки упорядочены одинаково, поэтому теперь вы можете проверить, что каждый диктант в одном списке совпадает с диктом в той же позиции в другом списке.Проверить zip(list_1, list_2);это должно облегчить этот шаг.

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