Уведомления

Группа в Telegram: @pythonsu

#1 Май 3, 2019 22:11:18

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

re.findall Извлечь определенный данные в тексте

есть определенная строка формат строки везде одинаковый но длина разная - пример
'1.3', ‘1854’, ‘1.4.1.0’, ‘6.3.1.1’, ‘47480.3.2.2.4.0’, ‘1’
или
'1.3', ‘1854’, 1.3.1.1', ‘1.4.1.0’, ‘6.3.1.1’, ‘480.1.2.2.0.0’, ‘1’
итд
надо извлечь только предпоследние !! данные в строке без ковычек должно получится так
а = 47480.3.2.2.4.0 или а = 480.1.2.2.0.0

Отредактировано dima_ikar (Май 3, 2019 22:13:12)

Офлайн

#2 Май 3, 2019 22:38:30

Yuri197
Зарегистрирован: 2019-03-24
Сообщения: 24
Репутация: +  0  -
Профиль  

re.findall Извлечь определенный данные в тексте

Если я правильно понял, то можно так:

 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
if __name__ == "__main__":
    string = "'1.3', '1854', '1.3.1.1', '1.4.1.0', '6.3.1.1', '480.1.2.2.0.0', '1'"
    list_values = string.split(',')
    len_list_value = len(list_values)
    len_list_value -= 2
    print(list_values[len_list_value])

Офлайн

#3 Май 3, 2019 22:40:49

Egorro13
Зарегистрирован: 2019-04-16
Сообщения: 105
Репутация: +  5  -
Профиль  

re.findall Извлечь определенный данные в тексте

Если именно через регулярки, вроде примерно такое получается:

 pattern = re.compile(r"'([0-9\.]+)',\s*'[0-9\.]*'$")

Отредактировано Egorro13 (Май 3, 2019 22:41:22)

Офлайн

#4 Май 3, 2019 22:55:46

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

re.findall Извлечь определенный данные в тексте

Egorro13
Если именно через регулярки, вроде примерно такое получается:
если я правильно понял то pattern = re.compile(r"'(+)',\s*'*'$", типа строка)
нее не работает TypeError: unhashable type: ‘list’

Офлайн

#5 Май 3, 2019 22:59:33

Egorro13
Зарегистрирован: 2019-04-16
Сообщения: 105
Репутация: +  5  -
Профиль  

re.findall Извлечь определенный данные в тексте

dima_ikar
если я правильно понял то pattern = re.compile(r“'(+)',\s*'*'$”, типа строка)
Это, грубо говоря, создание шаблона с нужным регулярным выражением для последующей работы. Использование может выглядеть примерно так (просто как пример, сам только недавно начал разбираться с этим):
 import re
pattern = re.compile(r"'([0-9\.]+)',\s*'[0-9\.]*'$")
found = pattern.search("'1.3', '1854', '1.4.1.0', '6.3.1.1', '47480.3.2.2.4.0', '1'")
print(found.group(1))

Отредактировано Egorro13 (Май 3, 2019 23:00:05)

Офлайн

#6 Май 3, 2019 23:15:15

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

re.findall Извлечь определенный данные в тексте

Yuri197
Если я правильно понял, то можно так:
мил человек Ты спас меня - спасибо

Офлайн

#7 Май 3, 2019 23:24:16

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

re.findall Извлечь определенный данные в тексте

Egorro13
import re
pattern = re.compile(r"'(+)',\s*'*'$“)
found = pattern.search(”'1.3', ‘1854’, ‘1.4.1.0’, ‘6.3.1.1’, ‘47480.3.2.2.4.0’, ‘1’")
print(found.group(1))
прекрасно тоже верно только у меня строка заключена в квадратные скобки - буду их удалять щас

Офлайн

#8 Май 3, 2019 23:31:34

Egorro13
Зарегистрирован: 2019-04-16
Сообщения: 105
Репутация: +  5  -
Профиль  

re.findall Извлечь определенный данные в тексте

dima_ikar
прекрасно тоже верно только у меня строка заключена в квадратные скобки - буду их удалять щас
Не проще в конец регулярки квадратную скобку добавить? ))
 pattern = re.compile(r"'([0-9\.]+)',\s*'[0-9\.]*'\]$")

Офлайн

#9 Май 3, 2019 23:39:18

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

re.findall Извлечь определенный данные в тексте

Egorro13
Не проще в конец регулярки
Егор и компактная регулярка и отцепление хвоста уже описаны в http://python.su/forum/topic/37170/?page=2
Это одна тема. ТС умудрился запутаться и наплодить тем..



Офлайн

#10 Май 3, 2019 23:45:08

Egorro13
Зарегистрирован: 2019-04-16
Сообщения: 105
Репутация: +  5  -
Профиль  

re.findall Извлечь определенный данные в тексте

doza_and
Егор и компактная регулярка и отцепление хвоста уже описаны в http://python.su/forum/topic/37170/?page=2
Ту тему я читал, связь уловил, но именно тут был задан конкретный вопрос, на который я мог попытаться ответить с пользой и для спрашивающего, и для себя))

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version