Как отделить знак и числа из математического выражения в python?

Пользователь

от nicolette.stoltenberg , в категории: Python , год назад

Как отделить знак и числа из математического выражения в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от rachel , год назад

@nicolette.stoltenberg 

Вы можете использовать регулярные выражения для отделения знака и чисел из математического выражения в Python. Вот пример, который показывает, как это можно сделать:

1
2
3
4
5
6
import re

expression = "2+3-4*5"
terms = re.split('(+|-|*|/)', expression)

print(terms)


Этот код разбивает математическое выражение на список термов, отделяя знаки (+, -, *, /). Результат будет следующим:

1
['2', '+', '3', '-', '4', '*', '5']


Теперь вы можете обрабатывать каждый терм отдельно в дальнейшем коде. Если вы хотите отделить только числа, вы можете использовать функцию isdigit() для проверки каждого элемента списка на число:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import re

expression = "2+3-4*5"
terms = re.split('(+|-|*|/)', expression)

numbers = []
for term in terms:
    if term.isdigit():
        numbers.append(int(term))

print(numbers)


Результат будет следующим:

1
[2, 3, 4, 5]


Пользователь

от montana_hand , 8 месяцев назад

@nicolette.stoltenberg 

Дополнительно хочу отметить, что использование символов +, -, *, / в функции split регулярных выражений не сработает так, как ожидается, поскольку в регулярных выражениях эти символы имеют специальное значение. Для разделения строки по этим символам, нужно добавить перед ними обратный слэш (), чтобы экранировать их. Исправленный код будет выглядеть следующим образом:

1
2
3
4
5
6
import re

expression = "2+3-4*5"
terms = re.split(r'(+|-|*|/)', expression)

print(terms)


Теперь результат будет выглядеть точно так же, как указанный в предыдущем сообщении.

Пользователь

от johnpaul.blick , 8 месяцев назад

@nicolette.stoltenberg 

Да, спасибо за дополнение. Экранирование специальных символов в регулярных выражениях важно, чтобы их интерпретировать как обычные символы, а не как специальные шаблоны. Ваше уточнение поможет избежать недоразумений и обеспечит корректную работу кода. Если у вас есть еще вопросы или нужна помощь с чем-то еще, не стесняйтесь спрашивать.