Я пытаюсь описать различия между двумя строками, используя результат метода compare(a,b)
класса Differ
, определенного в difflib
в python. Я использую compare(a,b)
следующим образом.Результат Differ.compare() исчезает после использования один раз
s1 = ["one", "three", "twoo"]
s2 = ["one", "tow", "tree"]
d = difflib.Differ()
result = d.compare(s1, s2)
# without this for loop, the result is as expected
for r in result:
print(r)
desc = describe_diff(result)
for k, value in desc.items():
print(k, value)
Моя проблема, когда я напечатать result
перед его передачей в функцию describe_diff
, которую я создал, результат не так. Но когда я прокомментирую цикл for, который печатает result
, выход в порядке. Я пробовал печатать result
, используя два для петель один за другим, но он печатается только один раз. Однако, когда я вставляю compare(s1,s2)
между двумя циклами (или между контуром печати и моим вызовом функции describe_diff
), все в порядке. Итак, чтобы использовать значение result
несколько раз, мне нужно каждый раз выполнять метод compare
? Должен быть какой-то способ обойти это. Пожалуйста помоги.
Большое спасибо! Я знаю, что такое генераторы и как они работают. Похоже, я должен был взглянуть на тип возвращаемого метода 'compare' из документации, прежде чем размещать здесь вопрос. –
На самом деле пример в документации показывает, что они сделали список первым. Это из документации: '>>> result = list (d.compare (text1, text2))' –