Fobos World

  • Увеличить размер
  • Размер по умолчанию
  • Уменьшить размер
Главная Программы Разное Сравнение таблиц

Сравнение таблиц

Казалось бы простая задача - сравнение таблиц. Точнее сравнение двух столбцов таблицы на совпадения или различия. Логично предложить что Excel идеальное средство решения проблемы, но увы простого бесплатного сравнение таблиц в Excel я не нашёл, разве что кроме примитивного "строка1=строка2". В реальности необходима некоторая обработка строк до сравнения, так как они могут содержать лишние пробелы, знаки препинания и так далее. Как итог было решено написать утилиту сравнивающую два текстовых файла построчно и с обработкой строк по выбору пользователя...

Обработка строк именно через файлы была выбрана как универсальная. Неважно какой источник данных, просто ли список или таблица Excel. Обычно всё можно скопировать в текстовый файл. Итак приступим непосредственно к программе.

Скачать программу "Сравнение таблиц" (214Кб)

Скачайте и распакуйте программу. В исходном варианте она содержит три файла "Compare.exe" - сама программа. "Список 1.txt" и "Список 2.txt" - пустые текстовые файлы. Как раз в них нужно вставить ваши строки для сравнения. Запускаем:

Окно программы

По умолчанию на мой взгляд стоят оптимальные настройки сравнения. Окно с примером того, как будет работать сравнения таблиц создано только для подгонки настроек под ваши задачи и общего понимания происходящего. Не сравнивайте реальные данные в примере, т.к. эти окошки вмещают не более 32КБайт текста, остальное обрубается без предупреждения. Вы можете получить ошибочный результат! Программа имеет подсказку и при наведении мыши в окне показывается краткое описание настройки или элемента.

После того, как наиграетесь с примером сравнения - скопируйте ваши данные для сравнения в файлы "Список 1.txt" и "Список 2.txt" и с выбранными ранее настройками нажмите кнопку "Обработать файлы". Во время обработки файлов на кнопке появляется надпись "Идёт обработка" красным цветом, дождитесь окончания этого процесса. По окончанию загляните в место откуда запустили программу, в папке с программой в зависимости от настроек появляются файлы указанные в примере сравнения. При каждом новом сравнении или открытие/закрытие программы все файлы кроме "Список 1.txt" и "Список 2.txt" удаляются.

И немного о скорости сравнения. Большинство реальных задач решаются практически мгновенно. Ну а мои тесты такие (процессор типа Intel Core под сокет LGA 775 c частотой 2ГГц):

Сравнение 2-х списков размером 1Мб каждый (25 символов на строку и 39 тысяч строк в каждом списке), для сравнения очевидно нужно каждую строку 1-ого списка сравнить со всеми строками другого. Итого получаем 1,521 миллиарда сравнений строк. Время выполнения около 20 секунд. Расход памяти менее 10Мб.

Сравнение 2-х списков размером 10Мб каждый (25 символов на строку и 390 тысяч строк в каждом списке). Итого получаем 152,1 миллиарда сравнений строк. Время выполнения около часа. При этом программа отхватывает себе около 200Мб оперативной памяти. Хотя такие размеры - это уже территория баз данных. В этой программе все разумные способы повышения скорости я уже использовал.

Алгоритм работы и параметры сравнения

Алгоритм работы таков, что при любых настройках из строк удаляются всё символы, кроме латинских и русских букв, цифр и знаков точки и запятой. Разумеется удаляются все лишние пробелы между словами и пробелы по краям строки.

Искать совпадающие строки и Искать отличающиеся строки - тут всё понятно, будут искаться совпадающие строки или отличающиеся. Совпадающие будут записываться в файл "Совпадающие.txt". При поиске отличающихся строк они будут записываться в два файла "Несовпадения 1.txt" и "Несовпадения 2.txt" для Списков 1 и 2 соответственно. Так же в области примера сравнения вместо одного окна появляется два.

ВНИМАНИЕ! При сравнении списков на совпадение есть особенность, так как одинаковые строки имеются  в обоих списках, в результат попадают строки из списка 1. Более аккуратно оформленный текст помещайте в список 1 при сравнении на совпадения.

Исправлять ошибки раскладки клавиатуры - до Punto Switcher тут конечно далеко. Имеются ввиду ошибки набора похожих букв не в той раскладке (C,H,P и т.д.). Например русской "с" и латинской. Они находятся на одной клавише и если слово начинается с "с", то можно набрать первую букву в английской раскладке, а потом переключиться на русскую или же наоборот. Алгоритм замены такой, что если в слове русских букв больше чем английских, то английские меняются на русские и наоборот.

Исправлять Ё(ё) на Е(е) - просто все "ё" заменяются на "е".

Сравнивать без учёта регистра - все буквы стают большими.

Сравнивать по уникальным строкам - Если параметр включён, то сначала списки проверяются на совпадающие строки. Если строка повторяется например 5 раз, то один экземпляр этой строки остаётся в списке для сравнения, а 4-е отправляются в список "повторов". Повторы для каждого списка слов свои.

Без этого параметра строки сравниваются как бы попарно. Например при сравнении на совпадающие строки если в 1-ом списке будет 2-е одинаковые строки, а во 2-ом списке ещё 3-и такие строки, то результатом будут только две строки, т.к. 3-ей строке не нашлось пары с которой бы она совпадала. Если для этого примера переключить сравнения на не совпадающие строки, то в результат несовпадающих попадёт одна строка из списка 2-а, т.к. она ни с чем не совпадает.

Используя сравнение по уникальным строкам можно найти повторяющиеся строки в списке. Для этого можно например заполнить строками только файл "Список 1.txt" и сравнить с пустым файлом "Список 2.txt" и тогда в файле "ПовторСп1.txt" появятся потворяющиеся строки из списка 1.

Повторы только для строк из результата - работает только вместе со сравнением по уникальным строкам. Без этого параметра в списки повторов попадают все повторяющиеся строки. Если включить, то в повторы будут попадать только строки присутствующие в результате. Количество строк попавших в повторы аналогично и равно количеству повторений в начальном списке минус 1.

Удалять точки и запятые и Удалять все пробелы - просто удаляются и всё тут.

Благодарности, пожелания, вопросы и тухлые помидоры с нетерпением жду в комментариях. :)

 

Комментарии 

 
#81 Замир 07.08.2014 12:59
Классно все четко и ясно спасибо огромное сэкономил много времени благодаря твоей программе!
Цитировать
 
 
#80 Fobos 22.07.2014 16:16
Пожалуйста. Яндекс мой сайт любит, а вот Гугл нет.
Цитировать
 
 
#79 Александр 22.07.2014 14:28
Спасибо большое! Очень полезная вещь! Жаль что не каждый о ней знает...
Цитировать
 
 
#78 Fobos 04.03.2014 11:20
Я смогу помочь только если предоставите файлы на support@foboswo rld.ru
И скажите какая именно строка вас смущает.
А так это будет гадание почти на кофейной гущею
Цитировать
 
 
#77 Владилав 04.03.2014 08:22
возникли вопросы по работе программы:
при сравнении 2 массивов данных (по 500 000 строк в каждом) программа ведет себя не очень адекватно (или я отмечаю не те галки). ищу отличия по двум файлам, но в итоге наблюдаю следующее:
в первом файле есть строка с уникальным значением (в одном экземпляре), и во втором то же самое. в результате в файле Несовпадения 1 и в Несовпадения 2 получаю это же значение (хотя его не должно там быть!)
настройки программы перед запуском:
https://db.tt/GjrQGEnh
Цитировать
 
 
#76 mikl 25.02.2014 16:34
Спасибо бро, то что нужно.
Цитировать
 
 
#75 Fobos 27.01.2014 10:18
Файл совпадающие создается в той же папке где находится сама программа. Если вы копируете свои данные для сравнения в текстовые файлы список 1 и 2 то всё должно получаться. Единственное винда иногда может тупить и не показывать только что созданные в папке файлы. После того как нажмете кнопку обработать файлы. Зайдите в папку программой заново.
Цитировать
 
 
#74 Станислава 27.01.2014 09:49
День добрый.
Подскажите, где формируется файл "Совпадающие"? Не вижу процесса сравнения и не вижу итогового файла.
Мои действия: беру два списка, копирую в "Список 1" и "Список 2". Наживаю на кнопку "Обработать файлы"... и ничего не происходит.
Что в моих действиях некорректно?
Цитировать
 
 
#73 Fobos 31.12.2013 10:48
Цитирую Я:
Незаменима для сотрудников полиции...

Вот уж чего не ожидал. :) Как говорится была бы программа, а применение найдётся.
Цитировать
 
 
#72 Я 31.12.2013 10:00
Незаменима для сотрудников полиции...
Цитировать
 

Добавить комментарий

Защитный код
Обновить



Киберкуб Самара