Форум сайта python.su
0
Здравствуйте. Пытаюсь изучать язык, но простое чтение материала как то не втыкает, вроде что то понятно, но как все это применять не понятно. По этому поставил для себя задачку. Есть у меня проблема, в том что периодически нужно сравнивать пару текстовых файлов на предмет совпадения в них 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 были отсортированы по порядку, в столбик, то это можно было бы проверить программами, которых в интернете полно и даже онлайн.
Может кто подскажет алгоритм решения этой задачки? Писать код не надо, хочется самому попробовать решить это. Если можно так сказать на пальцах по проще, а то я не волшебник, я только учусь
. Спасибо.
Офлайн
73
регулярки для извлечения только ip из каждого текстового файла в множество, ну а дальше работаем с множествами
A - B
A.difference(B) Возвращает разность множеств A и B (элементы, входящие в A, но не входящие в B).
Офлайн
0
Я правильно понимаю, что нужно изучать вот это - https://tproger.ru/translations/regular-expression-python/ ?
Офлайн
73
ну да. только еще уметь правильно создать шаблон поиска потому как ip помимо цифр имеет и точки а так же в тексте тоже могут быть точки.
Офлайн
0
Пока не представляю как я буду создавать этот шаблон, который должен как то отделять точки в ip от точек в тексте. Но и на этом спасибо, пошел изучать. Будет что то не понятно напишу.
Офлайн
73
ну можно и пойти другим путем. я так понимаю ip адрес в тексте отделен пробелами как и слова но в ip три точки. я вот взял текст твоего поста и прогнал через этот код
with open('input.txt') as in_ip: res = in_ip.read().split() for i in res: if i.count('.') == 3: print(i)
Офлайн
221
vlhгуглите готовые рецепрты для регулярок, все давно написано за вас
Пока не представляю как я буду создавать этот шаблон
Офлайн