Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
 Аватар для VistaSV30
986 / 330 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 4

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

05.05.2022, 18:44. Показов 1126. Ответов 7

Студворк — интернет-сервис помощи студентам
Добрый день!

Подскажите как получить список операндов без лишних элементов
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import re
 
a = '(1+2) *(3.5- 5.5)+57,48**2'
 
a = a.replace(' ','')  # удаление пробелов
a = a.replace(',','.')  # замена запятой на точку
 
d = re.split(r'[\+\-\(\)\*]', a)  # операнды
mt = re.finditer(r'\*{2}|[\+\-\(\)\*]', a)
s = [i.group() for i in mt]  #  операторы
 
 
print(d)
print(s)
Пока получается:
['', '1', '2', '', '', '3.5', '5.5', '', '57.48', '', '2']

А нужно:
['1', '2', '3.5', '5.5','57.48','2']

Спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.05.2022, 18:44
Ответы с готовыми решениями:

Калькулятор с произвольным количеством операндов
Всем привет! Опять столкнулся с трудной задачей, одна часть которого мне ни как не поддаётся....

Операнды арифметического выражения
В выражении 1xBAD16 + 2CxFE16 x обозначает некоторую цифру из алфавита шестнадцатеричной системы...

Операнды арифметического выражения записаны в системе счисления с основанием 15
Помогите найти ошибку. Условие: Операнды арифметического выражения записаны в системе счисления с...

7
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
05.05.2022, 19:31
VistaSV30, Как вариант.
Python
1
2
3
4
a = '(1+2) *(3.5- 5.5)+57,48**2'
for sep in "+-=*()": #Добавить сюда все нужные символы
    a = a.replace(sep, " ")
print(a.split())
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
05.05.2022, 19:34
Python
1
re.findall(r'\d\.\d|\d+', a)
Добавлено через 34 секунды
Code
1
['1', '2', '3.5', '5.5', '57', '48', '2']
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
05.05.2022, 20:45
Лучший ответ Сообщение было отмечено VistaSV30 как решение

Решение

Python
1
2
3
4
import re
 
a = '(1+2) *(3.5- 5.5)+57,48**2'
print(re.findall(r'\d*\.?\d+', a.replace(',', '.')))
1
 Аватар для VistaSV30
986 / 330 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 4
05.05.2022, 22:42  [ТС]
iSmokeJC, не дочитал я мануал до findall
Python
1
2
3
4
5
6
7
8
9
import re
 
a = '(1+2) *(3.5- 5.5)+57,48**2 /  254.7989+.12**45.'.replace(',','.')
 
d = re.findall(r'\d*\.?\d+', a)  # операнды 
s = re.findall(r'\*{2}|[\+\-\(\)\*\/]', a)  # операторы
 
print(d)
print(s)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
05.05.2022, 23:13
VistaSV30, внутри диапазона экранировать не надо. Только минус ставить или в начале, или в конце.
[-+()*/]
1
 Аватар для VistaSV30
986 / 330 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 4
05.05.2022, 23:15  [ТС]
Про это я точно читал, только забыл
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
05.05.2022, 23:19
Бывает...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.05.2022, 23:19
Помогаю со студенческими работами здесь

Операнды арифметического уравнения
Операнды арифметического уравнения записаны в разных системах счисления. 3364x(11)+ x7946(12)=...

Псевдокод с операторами и операндами
Доброго времени суток!Хочу уточнить,возможно ли реализовать такой псевдокод? x = for i in...

Логические операнды И, ИЛИ
strings = input('Введите 1-е слово: ') i = 0 while strings != 'конец' and strings != 'КОНЕЦ': ...

Дан список слов. Отфильтровать список , получив список слов, которые начинаются с гласной буквы
a = b = ('a','e','i','o','u','y') c = for i in a: if i.lower() in b: c.append(a)...

Дан список. Получить список списков
Дан список A=. Получить список списков: 1-й элемент:A1 0 0 0 0 0 2-й элемент: A2 A3 0 0 0 0 3-й...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru