Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 15, 2014 19:19:45

tipok
Зарегистрирован: 2014-10-15
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг текста с заменой последних символов

Здраствуйте,помогите сделать скрипт.Цель-привести список 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()
Дальше немогу догнать как обработать текст.Спасибо!

Офлайн

#2 Окт. 15, 2014 19:32:11

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Парсинг текста с заменой последних символов

А что тут выдумывать? split - разбить строку на подстроки, сделать с подстроками что угодно, join - собрать строку назад.



Офлайн

#3 Окт. 15, 2014 20:50:01

Art-master
От: Россия, Ростов-на-Дону
Зарегистрирован: 2013-06-08
Сообщения: 78
Репутация: +  1  -
Профиль   Отправить e-mail  

Парсинг текста с заменой последних символов

Бейте ваши строки на подстроки (split(“.”)), затем циклом проверяйте наличие и количество нулей в конце, каждой подстроки, затем просто уберите их например через извлечение среза. Затем через join объединяйте обратно ваши подстроки в строки ip-адреса. Затем создайте set (множество) в которое вносите ваши эти адреса, сочетая эту обработку с дополнением в эти строки маски. Set - множество без повторений, которое не даст вам повторить один и тот же ip-адрес. Сам код думайте сами, ибо это примитив.

P.S. У кого найдется решение лучше - пишите.

Офлайн

#4 Окт. 15, 2014 21:42:07

bs0d
Зарегистрирован: 2014-02-01
Сообщения: 76
Репутация: +  2  -
Профиль   Отправить e-mail  

Парсинг текста с заменой последних символов

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)

как вам мой костыль, господа?

Офлайн

#5 Окт. 15, 2014 23:08:16

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Парсинг текста с заменой последних символов

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

ip_networks = set()
for line in open('ip_addresses.txt'):
    ip_networks.add(line.strip().rsplit('.', 1)[0]+'.0/24')



Офлайн

#6 Окт. 16, 2014 23:45:00

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Парсинг текста с заменой последних символов

а от куда берётся информация о маске сети, если там не 24, а 16 маска к примеру.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version