Уведомления

Группа в Telegram: @pythonsu

#1 Июль 10, 2017 20:06:10

vlh
Зарегистрирован: 2017-07-10
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Сравнение двух файлов

Здравствуйте. Пытаюсь изучать язык, но простое чтение материала как то не втыкает, вроде что то понятно, но как все это применять не понятно. По этому поставил для себя задачку. Есть у меня проблема, в том что периодически нужно сравнивать пару текстовых файлов на предмет совпадения в них IP адресов. То есть в обоих текстовых файлах есть списки IP адресов, нужно их сравнить и если есть какой или какие IP адреса которые не присутствует в обоих списках, то есть в первом файле он есть , а во втором его нет, или адрес есть во втором файле, а в первом его нет. То нужно вывести это на экран. Можно конечно сделать красиво, показать где и в каком файле эта проблема или записать это в отдельный файл, но мне пока этого не надо. Достаточно, что например с таким IP 192.168.0.1 проблема, дальше уже не проблема простым поиском в самом файле найти где есть этот IP, а где его нет. Да, не по феншию, но для меня будет и это хорошо.
1. Проблема, содержание этих файлов хаотичное, то есть IP идут не по порядку и не в одну строчку, так же в файле присутствует текст. Так же в одном из файлов может быть продублированы IP. То есть например 192.168.0.1 далее текст, потом 192.168.0.1 потом 192.168.100.2 далее текст потом 192.168.100.2 и т.д. В другом файле будет 192.16.0.1 192.168.100.2 В таком примере все хорошо, в обоих файлах присутствуют 192.168.0.1 и 192.168.100.2 и не важно, что в первом файле их по два.
2. Не представляю каким способом это сделать.
Если бы IP были отсортированы по порядку, в столбик, то это можно было бы проверить программами, которых в интернете полно и даже онлайн.
Может кто подскажет алгоритм решения этой задачки? Писать код не надо, хочется самому попробовать решить это. Если можно так сказать на пальцах по проще, а то я не волшебник, я только учусь . Спасибо.

Офлайн

#2 Июль 10, 2017 20:14:06

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Сравнение двух файлов

регулярки для извлечения только ip из каждого текстового файла в множество, ну а дальше работаем с множествами
A - B
A.difference(B) Возвращает разность множеств A и B (элементы, входящие в A, но не входящие в B).

Офлайн

#3 Июль 10, 2017 20:54:16

vlh
Зарегистрирован: 2017-07-10
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Сравнение двух файлов

Я правильно понимаю, что нужно изучать вот это - https://tproger.ru/translations/regular-expression-python/ ?

Офлайн

#4 Июль 10, 2017 21:04:17

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Сравнение двух файлов

ну да. только еще уметь правильно создать шаблон поиска потому как ip помимо цифр имеет и точки а так же в тексте тоже могут быть точки.

Офлайн

#5 Июль 10, 2017 21:12:48

vlh
Зарегистрирован: 2017-07-10
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Сравнение двух файлов

Пока не представляю как я буду создавать этот шаблон, который должен как то отделять точки в ip от точек в тексте. Но и на этом спасибо, пошел изучать. Будет что то не понятно напишу.

Офлайн

#6 Июль 10, 2017 21:24:47

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Сравнение двух файлов

ну можно и пойти другим путем. я так понимаю ip адрес в тексте отделен пробелами как и слова но в ip три точки. я вот взял текст твоего поста и прогнал через этот код

 with open('input.txt') as in_ip:
    res = in_ip.read().split()
for i in res:
    if i.count('.') == 3:
        print(i)
результат:
192.168.0.1
192.168.0.1
192.168.0.1
192.168.100.2
192.168.100.2
192.16.0.1
192.168.100.2
192.168.0.1
192.168.100.2
посмотри сколько раз в твоем тексте указан ip и сколько в результате

Офлайн

#7 Июль 11, 2017 00:26:14

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Сравнение двух файлов

vlh
Пока не представляю как я буду создавать этот шаблон
гуглите готовые рецепрты для регулярок, все давно написано за вас



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version