Il giorno dom 16 giu 2019 alle ore 18:31 Lorenzo Buonanno <buonanno.lore...@gmail.com> ha scritto: > > Prova una cosa come > > import re > first_substitution = re.sub(r"\$\$(.*?)\$\$", r"\[\1\]", input_text, > flags=re.S) > final_text = re.sub(r"\$(.*?)\$", r"\(\1\)", first_substitution, flags=re.S)
Intanto grazie per le vostre indicazioni. La funzione che ho realizzato è: def translate(string): """translate: "$$<formula>$$" ----> "\[<formula>\]" "$<formula>$" ----> "\(<formula>\)" >>> print(translate(r'$$<formula>$$')) \[<formula>\] >>> print(translate(r'$<formula>$')) \(<formula>\) >>> print(translate(r'$$a^2=b^2+c^2$$')) \[a^2=b^2+c^2\] >>> print(translate(r'$\frac{3+x}{x}$')) \(\frac{3+x}{x}\) >>> print(translate(r'''$$ ... a^2=b^2+c^2 ... $$''')) \[ a^2=b^2+c^2 \] >>> print(translate(r'primo:~$2$; secondo: $5$; terzo:~$7$')) primo:~\(2\); secondo:\(5\); terzo:~\(7\) """ result = re.sub(r'\$\$(.*)\$\$', r'\[\1\]', string.rstrip(), flags=re.S) result = re.sub(r'\$(.*)\$', r'\(\1\)', result, flags=re.S) return result In un primo tempo non c'era il flag S e gli ultimi due test fallivano. Aggiunto il flag l'ultimo test continua a fallire: Failed example: print(translate(r'primo:~$2$; secondo: $5$; terzo:~$7$')) Expected: primo:~\(2\); secondo:\(5\); terzo:~\(7\) Got: primo:~\(2$; secondo: $5$; terzo:~$7\) Becca il primo e l'ultimo dollaro ma salta quelli intermedi. So che Marco lo aveva spiegato benissimo, ma non ho sotto mano il suo libro e non mi ricordo come si risolve... -- Daniele www.fugamatematica.blogspot.com giusto! nel verso forse è perché non guardiamo le cose Quando non ci capiamo, _______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python