Sergomen
@Sergomen
Просто делай добро и оно вернётся

Как получить число между определённых знаков?

Нужно взять число между парой @@
пробую сделать через регулярные выражения
import re 
t = "text @@-12346764853@@ text fgtdytd"
r = re.findall(r'[@@]\w+[@@]',t)

но почемуто возвращаются пустые скобки []

я же вроде правильно делаю: в скобках знак\знаки которые ищутся, \w+ - любой текст, в скобках знаки которые ищутся.
в чем я ошибся?
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
SoreMix
@SoreMix
yellow
\w - это A-z0-9
У вас стоит после @ знак минус. Который не входит в зону A-z0-9

Если нужнен любой контент между скобок - лучше используйте либо .+, либо \S+.
. - любой символ
\S - любой непробельный символ

re.findall(r'@@(\S+?)@@', t).groups(1)

Ну и если с регексом не знакомы, попробуйте использовать сервисы вроде https://regex101.com/
Он подсвечивает обозначение каждого знака и группы, полученные при поиске
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@dmshar
def is_number(str):
    try:
        float(str)
        return True
    except ValueError:
        return False
t = "text @@-12346764853@@ text fgtdytd@@-12.346@@ hfghsgf @@162.4@@"
r = t.split('@@')
print(list(filter(is_number, r)))


Результат
['-12346764853', '-12.346', '162.4']
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 130 000 ₽
deeplay Новосибирск
от 130 000 ₽
Enjoy PRO Санкт-Петербург
от 140 000 до 180 000 ₽
27 окт. 2020, в 00:22
2000 руб./за проект
26 окт. 2020, в 23:49
1500 руб./за проект
26 окт. 2020, в 23:46
3000 руб./за проект