Python difflib: выделение встроенных различий?

Вам необходимо создать следующую папку в папке хранилища: -

app

framework 
----> cache
----> sessions
----> views

logs

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

Я надеюсь, что это разрешит . Пожалуйста, укажите правильный путь к кешу. Вопрос

25
задан AnC 21 April 2009 в 19:57
поделиться

2 ответа

For your simple example:

import difflib
def show_diff(seqm):
    """Unify operations between two compared strings
seqm is a difflib.SequenceMatcher instance whose a & b are strings"""
    output= []
    for opcode, a0, a1, b0, b1 in seqm.get_opcodes():
        if opcode == 'equal':
            output.append(seqm.a[a0:a1])
        elif opcode == 'insert':
            output.append("<ins>" + seqm.b[b0:b1] + "</ins>")
        elif opcode == 'delete':
            output.append("<del>" + seqm.a[a0:a1] + "</del>")
        elif opcode == 'replace':
            raise NotImplementedError, "what to do with 'replace' opcode?"
        else:
            raise RuntimeError, "unexpected opcode"
    return ''.join(output)

>>> sm= difflib.SequenceMatcher(None, "lorem ipsum dolor sit amet", "lorem foo ipsum dolor amet")
>>> show_diff(sm)
'lorem<ins> foo</ins> ipsum dolor <del>sit </del>amet'

This works with strings. You should decide what to do with "replace" opcodes.

43
ответ дан 28 November 2019 в 20:58
поделиться

difflib.SequenceMatcher будет работать в одной строке. Вы можете использовать «коды операций», чтобы определить, как изменить первую строку, чтобы сделать ее второй.

2
ответ дан 28 November 2019 в 20:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: