@fantom0005

Как заменить субстроку в Python, сохраняя часть этой строки?

Суть вопроса такая, нужно в входной строке типа
string = "cos(90) + cos(170) + sin( 80)" #могут быть и другие математические функции

сделать такие изменения:
out_string = "cos(degres(90)) +  cos(degres(170)) + sin(degres( 80))"

я написал такую регулярку:
(cos *\( *(?P<degres>[\d]+) *\))
как мне ей заменить косинусы, а цифры оставить?
и ещ вопрос: как сделать чтоб она меняла еще и синусы, и тангенсы?
  • Вопрос задан
  • 224 просмотра
Пригласить эксперта
Ответы на вопрос 1
@nirvimel
import re
string = "(cos(0) + sin(180)) * tan(45.0) + not_a_tan(1)"
print re.sub(r'\b(cos|sin|tan)\s*\(\s*(\d+(?:\.\d+)?)\s*\)', r'\1(degres(\2))', string)

Корректно обрабатывает целые и дробные числа.
Не реагирует на другие функции, заканчивающиеся на cos, sin или tan.
Заодно подправляет расстановку пробелов.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы