Найти - Пользователи
Полная версия: Чтение подстроки из файла
Начало » Python для новичков » Чтение подстроки из файла
1
MarkHammer
Здраствуйте ! Подскажите пожалуйста новичку способ чтения подстроки из файла, т.е. - имеется файл с различной инфой - надо найти в нем все подстроки IP= и прочесть все символы, начиная с этой подстроки до ближайшего символа двоеточия (, то бишь найти и вывести на stdout все айпишники имеющиеся в этом файле… Айпишники соответственно находятся между IP= и двоетичием .
doza_and
Предлагаю прочитать файл, а затем с использование регулярных выражений вытащить то что вам надо
....
import re
....
you_file_as_string=open("1","r").read()
for ip_string in re.finditer(r"IP=([\.\d]+):",you_file_as_string):
    ....
py.user.next
>>> 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']
>>>
py.user.next
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
>>>
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