Найти - Пользователи
Полная версия: Дан длинный текст, из которого надо извлечь определенные данные ограниченные символами [] . Помогите новичку
Начало » Python для новичков » Дан длинный текст, из которого надо извлечь определенные данные ограниченные символами [] . Помогите новичку
1 2
dima_ikar
пример
string = "[(< 0x7efd951a8b00 tags 0:0:6> payload [1.3.6.1.2.1.1.3.0]>, < consts 0, 4294967295>> payload [943317]>), (<ObjectName value object at 0x7efd94ed49e8 tagSet <TagSet object at 0x7efd951a8b00 tags 0:0:6> payload [1.3.6.1.6.3.1.1.4.1.0]>,"
надо выделить
а = 1.3.6.1.2.1.1.3.0
в = 943317
с = 1.3.6.1.6.3.1.1.4.1.0
то есть извлечь данные, которые ограничены символами payload >
мой пример
st = string.split("payload [").split(“]>”)
print(st)
Но он извлекает 1 совпадение а таких много
или
import re
st = re.findall('\',string)
print(st)
Но тут нельзя вставить другие символы что есть
FishHook
dima_ikar
А откуда вы эту строку получаете? Это же строковое представление какого-то дампа, не разумнее с исходным объектом работать?
dima_ikar
FishHook
dima_ikarА откуда вы эту строку получаете? Это же строковое представление какого-то дампа, не разумнее с исходным объектом работать?
это получение ТРАПА - там много инфы в ней но нужное выделено (payload > справа)
panama555
 string = "[(< 0x7efd951a8b00 tags 0:0:6> payload [1.3.6.1.2.1.1.3.0]>, < consts 0, 4294967295>> payload [943317]>),(<ObjectName value object at 0x7efd94ed49e8 tagSet <TagSet object at 0x7efd951a8b00 tags 0:0:6> payload [1.3.6.1.6.3.1.1.4.1.0]>,"
st = string.split("payload [")
s=[]
for x in range(1,len(st)):
    num=st[x].index("]")
    s.append(st[x][:num])
    
print(s)
a,b,c=s
print(a,b,c)

можно так
dima_ikar
panama555
Спасибо большое реально блин помогло – !!!!!!!!!!!!!!!!
dima_ikar
panama555
вопрос к гуру !! как быть если значений может быть от 2 до 8
верно когда их 3 то a,b,c=s если 4 то a,b,c,d=s - а если я не знаю их кол-во
Slym
 string = "[(< 0x7efd951a8b00 tags 0:0:6> payload [1.3.6.1.2.1.1.3.0]>, < consts 0, 4294967295>> payload [943317]>),(<ObjectName value object at 0x7efd94ed49e8 tagSet <TagSet object at 0x7efd951a8b00 tags 0:0:6> payload [1.3.6.1.6.3.1.1.4.1.0]>, payload бла бла[ДОБАВИЛ ЕЩЁ ДЛЯ ТЕСТА]"
st = string.split("payload")
ret = []
beginIndex = 0
while range(beginIndex, len(string)):
  beginIndex = string.find("payload", beginIndex)
  if beginIndex < 0: break
  beginIndex += len("payload")
  for i in range(beginIndex, len(string)):
    if (string[i] != "["): 
      beginIndex = i+1
    else:
      endIndex = beginIndex + string[i:].index("]")
      ret.append(string[beginIndex+1:endIndex])
      break
print(ret)

Поскольку я только учусь решил потренироваться на вашей задачке. Выборка должна быть от 0 до бесконечности. В целом код норм но в конце строки падаем в ексепшн нужно проверку прикрутить. Время позднее допилю завтра или может кто ещё допилит. Знающие, что да как мимо не проходим, рекомендуйте и критикуйте.

ЗЫ. Переделал. пробуйте!
dima_ikar
Slym
st = string.split(“payload”)
ret =
beginIndex = 0
while range(beginIndex, len(string)):
beginIndex = string.index(“payload”, beginIndex) + len(“payload”)
for i in range(beginIndex, len(string)):
if (string != “[”):
beginIndex = i+1
continue
else:
endIndex = beginIndex + string.index(“]”)
ret.append(string)
break
print(ret)

beginIndex = string.index(“payload”, beginIndex) + len(“payload”)
ValueError: substring not found
doza_and
Туплю. Вопрос вроде не по питону?
 >>> import re
>>> s="[(< 0x7efd951a8b00 tags 0:0:6> payload [1.3.6.1.2.1.1.3.0]>, < consts 0, 4294967295>> payload [943317]>), (<ObjectName value object at 0x7efd94ed49e8 tagSet <TagSet object at 0x7efd951a8b00 tags 0:0:6> payload [1.3.6.1.6.3.1.1.4.1.0]>,"
>>> re.findall(r"payload +\[([\d\.]+)\]",s)
['1.3.6.1.2.1.1.3.0', '943317', '1.3.6.1.6.3.1.1.4.1.0']
dima_ikar
doza_and
Туплю. Вопрос вроде не по питону?
нет это чистый питон
и Ваш результат я тоже рассматривал
вопрос в том что мне надо каждому найденному значению присвоить - пример
а = 1.3.6.1.2.1.1.3.0
в = 943317
итд - НО дело то в том что таких может быть от 4 до 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