Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 24, 2013 03:13:12

MarkHammer
Зарегистрирован: 2013-02-24
Сообщения: 97
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение подстроки из файла

Здраствуйте ! Подскажите пожалуйста новичку способ чтения подстроки из файла, т.е. - имеется файл с различной инфой - надо найти в нем все подстроки IP= и прочесть все символы, начиная с этой подстроки до ближайшего символа двоеточия (, то бишь найти и вывести на stdout все айпишники имеющиеся в этом файле… Айпишники соответственно находятся между IP= и двоетичием .

Офлайн

#2 Фев. 24, 2013 09:01:47

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Чтение подстроки из файла

Предлагаю прочитать файл, а затем с использование регулярных выражений вытащить то что вам надо

....
import re
....
you_file_as_string=open("1","r").read()
for ip_string in re.finditer(r"IP=([\.\d]+):",you_file_as_string):
    ....



Офлайн

#3 Фев. 25, 2013 04:00:07

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Чтение подстроки из файла

>>> import re
>>> 
>>> s = """
... abc IP=127.0.0.1: abc IP=127.0.0.2: abc IP=127.0.0.3: abc
... abc IP=127.0.0.4: abc IP=127.0.0.5: abc IP=127.0.0.6: abc
... abc IP=127.0.0.7: abc IP=127.0.0.8: abc IP=127.0.0.9: abc
... """
>>> 
>>> lst = re.findall(r'IP=([^:]+)', s)
>>> print(lst)
['127.0.0.1', '127.0.0.2', '127.0.0.3', '127.0.0.4', '127.0.0.5', '127.0.0.6', '127.0.0.7', '127.0.0.8', '127.0.0.9']
>>>



Офлайн

#4 Фев. 27, 2013 09:40:53

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Чтение подстроки из файла

MarkHammer (из лички)
Подскажите пожалуйста - если текст будет :
>>> s = """
... cell1: abc IP=127.0.0.1: cell10: abc IP=127.0.0.2: cell32: abc IP=127.0.0.3: abc
... cell1078: abc IP=127.0.0.4: cell287: abc IP=127.0.0.5: cell333: abc IP=127.0.0.6: abc
... cell345: abc IP=127.0.0.7: cell889: abc IP=127.0.0.8: cell457: abc IP=127.0.0.9: abc
... """
>>> 
как мне из этого текста выбрать пары cellxxx IP=xxx все значения пар заканчиваются двоеточием… и вывести это в формате :
cell1 IP=127.0.0.1
cell10 IP=127.0.0.2

cell457 IP=127.0.0.9

>>> import re
>>> 
>>> s = """
... cell1: abc IP=127.0.0.1: cell10: abc IP=127.0.0.2: cell32: abc IP=127.0.0.3: abc
... cell1078: abc IP=127.0.0.4: cell287: abc IP=127.0.0.5: cell333: abc IP=127.0.0.6: abc
... cell345: abc IP=127.0.0.7: cell889: abc IP=127.0.0.8: cell457: abc IP=127.0.0.9: abc
... """
>>> 
>>> lst = re.findall(r'cell(\d+):.+?IP=([^:]+)', s)
>>> numip_lst = [(int(i[0]), i[1]) for i in lst]
>>> #print(numip_lst)
... 
>>> for num, ip in numip_lst:
...     print('cell{0} IP={1}'.format(num, ip))
... 
cell1 IP=127.0.0.1
cell10 IP=127.0.0.2
cell32 IP=127.0.0.3
cell1078 IP=127.0.0.4
cell287 IP=127.0.0.5
cell333 IP=127.0.0.6
cell345 IP=127.0.0.7
cell889 IP=127.0.0.8
cell457 IP=127.0.0.9
>>>



Отредактировано py.user.next (Фев. 28, 2013 00:56:52)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version