2015-03-30 1 views
3

Предположим, что у меня есть текст (например, заданный как строка). Позже я собираюсь «отредактировать» этот текст, а это значит, что я хочу что-то добавить или удалить что-то. Таким образом, я получу еще одну версию текста. Тем не менее, я не хочу иметь две строки, представляющие каждую версию текста, поскольку между двумя последующими версиями существует много «повторений» (сходств). Другими словами, различия между строками малы, поэтому имеет смысл только сохранить различия между ними. Например, первые версии.Каков стандартный способ представления последующих изменений в тексте и для работы с этим представлением с использованием Python?

This is my first version of the texts. 

Вторая версия:

This is the first version of the text, that I want to use as an example. 

Я хотел бы сохранить эти две версии в качестве одного объекта (он не обязательно должен быть XML, я использую его только в качестве примера):

This is the <removed>my</removed> <added>first</added> version of the text<added>, that I want to use as an example</added>. 

Теперь я хочу идти дальше. Я хочу сохранить все последующие изменения как один объект. Другими словами, у меня будет более двух версий текста, но я хотел бы сохранить их как один объект, так что легко получить заданную версию текста и легко узнать, в чем разница между две последующие (или любые две заданные) версии.

Итак, подведем итоги, мой вопрос: Каков стандартный способ представления изменений в тексте и для работы с этим представлением с использованием Python.

+0

Взгляните на http://stackoverflow.com/questions/2307472/generating-and-applying-diffs-in-python, это аналогичный вопрос , – Bernhard

ответ

1

я бы, вероятно, пойти с difflib: https://docs.python.org/2/library/difflib.html

Вы можете использовать его для представления изменений между версиями строки и создать свой собственный класс для хранения последовательных различий.

EDIT: Я просто понял, что на вашем примере использования на самом деле не имеет смысла, поскольку отличия от difflib в основном хранят обе строки, поэтому вам будет лучше всего просто сохранить их все. Однако я считаю, что это стандартный (библиотечный) способ работы с изменениями текста, поэтому я не буду удалять этот ответ.

EDIT2: Хотя кажется, что если вы найдете способ применить unified_diff к строкам, это может быть ваш ответ. Кажется, что еще нет возможности сделать это с помощью difflib: https://bugs.python.org/issue2057

 Смежные вопросы

  • Нет связанных вопросов^_^