@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.
Заодно подправляет расстановку пробелов.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы