Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Python для новичков
  • » Дан длинный текст, из которого надо извлечь определенные данные ограниченные символами [] . Помогите новичку [RSS Feed]

#1 Май 3, 2019 14:22:35

dima_ikar
Зарегистрирован: 2019-05-03
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Дан длинный текст, из которого надо извлечь определенные данные ограниченные символами [] . Помогите новичку

пример

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 (Май 3, 2019 14:31:56)

Офлайн

#2 Май 3, 2019 14:33:54

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

Дан длинный текст, из которого надо извлечь определенные данные ограниченные символами [] . Помогите новичку

dima_ikar
А откуда вы эту строку получаете? Это же строковое представление какого-то дампа, не разумнее с исходным объектом работать?



Офлайн

#3 Май 3, 2019 14:36:44

dima_ikar
Зарегистрирован: 2019-05-03
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Дан длинный текст, из которого надо извлечь определенные данные ограниченные символами [] . Помогите новичку

FishHook
dima_ikarА откуда вы эту строку получаете? Это же строковое представление какого-то дампа, не разумнее с исходным объектом работать?
это получение ТРАПА - там много инфы в ней но нужное выделено (payload > справа)

Отредактировано dima_ikar (Май 3, 2019 14:37:33)

Офлайн

#4 Май 3, 2019 16:49:59

panama555
Зарегистрирован: 2019-02-19
Сообщения: 175
Репутация: +  4  -
Профиль   Отправить e-mail  

Дан длинный текст, из которого надо извлечь определенные данные ограниченные символами [] . Помогите новичку

 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)

можно так

Отредактировано panama555 (Май 3, 2019 16:52:02)

Офлайн

#5 Май 3, 2019 16:58:02

dima_ikar
Зарегистрирован: 2019-05-03
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Дан длинный текст, из которого надо извлечь определенные данные ограниченные символами [] . Помогите новичку

panama555
Спасибо большое реально блин помогло – !!!!!!!!!!!!!!!!

Офлайн

#6 Май 3, 2019 18:03:16

dima_ikar
Зарегистрирован: 2019-05-03
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Дан длинный текст, из которого надо извлечь определенные данные ограниченные символами [] . Помогите новичку

panama555
вопрос к гуру !! как быть если значений может быть от 2 до 8
верно когда их 3 то a,b,c=s если 4 то a,b,c,d=s - а если я не знаю их кол-во

Офлайн

#7 Май 3, 2019 19:16:16

Slym
Зарегистрирован: 2019-05-03
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Дан длинный текст, из которого надо извлечь определенные данные ограниченные символами [] . Помогите новичку

 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 до бесконечности. В целом код норм но в конце строки падаем в ексепшн нужно проверку прикрутить. Время позднее допилю завтра или может кто ещё допилит. Знающие, что да как мимо не проходим, рекомендуйте и критикуйте.

ЗЫ. Переделал. пробуйте!

Отредактировано Slym (Май 4, 2019 05:41:34)

Офлайн

#8 Май 3, 2019 19:54:38

dima_ikar
Зарегистрирован: 2019-05-03
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Дан длинный текст, из которого надо извлечь определенные данные ограниченные символами [] . Помогите новичку

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

Офлайн

#9 Май 3, 2019 20:00:22

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

Дан длинный текст, из которого надо извлечь определенные данные ограниченные символами [] . Помогите новичку

Туплю. Вопрос вроде не по питону?

 >>> 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']



Офлайн

#10 Май 3, 2019 20:20:36

dima_ikar
Зарегистрирован: 2019-05-03
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Дан длинный текст, из которого надо извлечь определенные данные ограниченные символами [] . Помогите новичку

doza_and
Туплю. Вопрос вроде не по питону?
нет это чистый питон
и Ваш результат я тоже рассматривал
вопрос в том что мне надо каждому найденному значению присвоить - пример
а = 1.3.6.1.2.1.1.3.0
в = 943317
итд - НО дело то в том что таких может быть от 4 до 9 - то есть а = … в = … итд

Офлайн

  • Начало
  • » Python для новичков
  • » Дан длинный текст, из которого надо извлечь определенные данные ограниченные символами [] . Помогите новичку[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version