Найти - Пользователи
Полная версия: Парсинг текста с заменой последних символов
Начало » Python для новичков » Парсинг текста с заменой последних символов
1
tipok
Здраствуйте,помогите сделать скрипт.Цель-привести список IP адресов вида
192.168.1.1
192.168.1.100
195.168.5.50
195.168.5.200

К виду
192.168.1.0/24
195.168.5.0/24

То есть к их маске.Алгоритм получается-получаем текст из файла —> заменяем последние символы до . на 0 —>удаляем дубли —->ставим маску,чаще всего это /24.
Как это все сделать?Мне мозгов хватило только на
import string
import re
ip=open("ip.txt")
data=ip.read()
Дальше немогу догнать как обработать текст.Спасибо!
FishHook
А что тут выдумывать? split - разбить строку на подстроки, сделать с подстроками что угодно, join - собрать строку назад.
Art-master
Бейте ваши строки на подстроки (split(“.”)), затем циклом проверяйте наличие и количество нулей в конце, каждой подстроки, затем просто уберите их например через извлечение среза. Затем через join объединяйте обратно ваши подстроки в строки ip-адреса. Затем создайте set (множество) в которое вносите ваши эти адреса, сочетая эту обработку с дополнением в эти строки маски. Set - множество без повторений, которое не даст вам повторить один и тот же ip-адрес. Сам код думайте сами, ибо это примитив.

P.S. У кого найдется решение лучше - пишите.
bs0d
tipok
s = '''192.168.1.1
192.168.1.100
195.168.5.50
195.168.5.200
'''
f = s.splitlines()
new_f = list(set(['{}.0/24'.format(x.rsplit('.', 1)[0]) for x in f]))
print(new_f)

как вам мой костыль, господа?
Budulianin
tipok
текст из файла —> заменяем последние символы до . на 0 —>удаляем дубли —->ставим маску,чаще всего это /24.

ip_networks = set()
for line in open('ip_addresses.txt'):
    ip_networks.add(line.strip().rsplit('.', 1)[0]+'.0/24')
sypper-pit
а от куда берётся информация о маске сети, если там не 24, а 16 маска к примеру.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB