Eu tenho um monte de strings matemáticas inline no estilo LaTeX em Python, por exemplo, eq = "$E = mc^2$"
ou eq = "$F = ma$ (N)"
que estou escrevendo em uma página da web que usa MathJAX. Portanto, quero converter os $
símbolos de abertura e fechamento no estilo MathJAX padrão de abertura \(
e fechamento com \)
, para que meus dois exemplos acima se tornem eqmathjax = "\(E = mc^2\)
e eqmathjax = "\(F = ma\) (N)"
. Observe que uma string pode, na verdade, conter mais de uma equação, cada uma delimitada por seu próprio par de $
sinais.
Eu poderia facilmente iterar as substituições conforme necessário, por exemplo:
twoeqns = "$E = mc^2$ and $F = ma$"
i = 0
repl = ["\(", "\)"]
while "$" in twoeqns:
twoeqns = twoeqns.replace("$", repl[i % 2], 1)
i += 1
mas tenho certeza de que deve haver uma maneira mais simples de fazer isso, por exemplo, com expressões regulares (sei que poderia ter a solução acima e uma função e usá-la como uma linha). Alguém tem esse método mais simples?
...emite:
(Retire o espaço em branco - sacrificando a legibilidade - se você realmente insiste que seja "uma linha").
Você poderia usar o método re.sub para substituir o texto correspondente.
Saída