Все инструменты сравнения, которые я нашел, просто сравнивают строку за строкой, а не char char. Есть ли какая-либо библиотека, которая дает подробную информацию о строках одной строки? Может быть, и процентная разница, хотя я думаю, что для этого существуют отдельные функции?diff для отдельных строк
ответ
Этот алгоритм дифференциалы слово за словом:
http://github.com/paulgb/simplediff
доступны в Python и PHP. Он может даже выплевывать HTML-формат с использованием тегов <ins>
и <del>
.
Хорошо, но пробелы тоже должны иметь значение. Закладка, замененная пространством, будет разницей, которая не подхвачена этим. –
Исходный код выглядит достаточно простым. Вы можете легко изменить его, чтобы разделить на пустую строку вместо пробела, чтобы вы могли различать по-символу. – slebetman
На самом деле это работает потрясающе, передавая строки непосредственно diff(), а не через stringDiff(). Хорошо работает на основе char char, потому что строки - это последовательности в python. И с выходом функции легко работать. Я задаюсь вопросом о накладных расходах на поиск самой большой общей подстроки, хотя, когда каждый элемент является только одним символом ... хотя я могу не понимать код ... –
Что вы можете попробовать, так это разделить оба символа строки на символы на строки, а затем вы можете использовать diff. Это грязный хак, но по крайней мере он должен работать и его очень легко реализовать.
Альтернативно вы можете разделить строку на список символов в Python и использовать difflib. Проверка Python difflib reference
Я подумал об этом, и он выглядит как «лучший» вариант. Я также рассмотрел возможность поиска в средствах сравнения строк и попытался заставить его рассматривать символы как строки вместо этого ... но я думал, что сначала проверю. –
Это можно сделать легко 'diff <(cat file1 | tr" "" \ n ") <(cat fil2 | tr" "" \ n ")', но проблема в том, что вывод плохо отформатирован. Гораздо лучше сделать 'wdiff file1 file2' Спасибо @Michael Williamson ответ. –
Ниже приведена посимвольная версия 'diff <(cat a1 | sed \ s /./ \ 0 \ n/'g) <(cat a2 | sed' /./ \ 0 \ n/'g) ' –
Я искал что-то подобное недавно и наткнулся на wdiff. Он работает на словах, а не на персонажах, но насколько это близко к тому, что вы ищете?
Хорошо, но пробелы тоже должны иметь значение. Закладка, замещенная пробелом, будет разницей, не подхваченной этим (если разделить по пробелам). –
wdiff кажется заброшенным с 1994 года. Он действительно работает, в основном. – lhf
@lhf, это заброшено или просто нечего больше улучшать? –
Вы можете реализовать простой алгоритм Needleman-Wunsch. Псевдокод доступен в Википедии: http://en.wikipedia.org/wiki/Needleman%E2%80%93Wunsch_algorithm
- 1. QTreeView настраиваемая высота строк для отдельных строк
- 2. sscanf для отдельных строк (более 2 строк)
- 3. Diff последовательных строк UNIX
- 4. Просмотр git diff от отдельных родителей
- 5. Как реализовать diff для дерева строк?
- 6. git diff - обработка длинных строк?
- 7. Несколько строк для отдельных ячеек отдельных ячеек в COGNOS
- 8. Количество отдельных вращающихся строк
- 9. Нахождение diff двух списков строк
- 10. Использовать трехсторонний diff для diff
- 11. Перестановка отдельных строк матрицы
- 12. Выбор отдельных строк SSRS
- 13. Сделать исключение отдельных строк
- 14. Возвращение отдельных строк для нескольких пользователей
- 15. PostgreSQL: настраиваемая логика для определения отдельных строк?
- 16. Latex: hyperref для отдельных строк longtable
- 17. MySQL, несколько строк для отдельных полей
- 18. asp: UpdatePanel для отдельных строк RadGrid
- 19. Как быстро обновить значения для отдельных строк?
- 20. Строки из ArrayList для отдельных строк JAVA
- 21. Ширина фона для отдельных текстовых строк
- 22. разборе строк файла журнала для отдельных записей
- 23. UITableViewCell стиль для редактирования отдельных строк
- 24. Как игнорировать KeyErrors для нескольких отдельных строк?
- 25. запросов для суммы всех и отдельных строк
- 26. возвращение частично отдельных/уникальных строк
- 27. Труба разделенная против отдельных строк
- 28. форматирование отдельных строк в excel
- 29. Ajax - получение отдельных строк данных
- 30. Выбор отдельных строк в столбце
Разве это не дубликат http://stackoverflow.com/questions/1721738/using-diff-or-anything-else-to-get-character-level-diff -between-text-файлы? –