Re: [Python] Ricerca e sostituzione con regex

2019-07-25 Per discussione Gollum1
Il 19 luglio 2019 20:11:15 CEST, Enrico Bianchi  ha 
scritto:
>Il 08/07/2019 15:19, Gollum1 ha scritto:
>> https://regex101.com/codegen?language=python
>
>Sì, tutto bello ed utile, ma questo non semplifica una regexp :)
>
>Enrico
>
>___
>Python mailing list
>Python@lists.python.it
>https://lists.python.it/mailman/listinfo/python

semplifica eccome, avendo dei template già pronti, e la spiegazione per ogni 
opzione che vai ad usare, e mettendo una riga di test, ti fa vedere anche come 
i diversi campi agiscono sulle varie parti del testo. 
byez
-- 
gollum1

Inviato dal mio dispositivo Android con K-9 Mail. Perdonate la brevità e gli 
errori, maledetto correttore automatico. 
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca e sostituzione con regex

2019-07-19 Per discussione Enrico Bianchi
Il 08/07/2019 15:19, Gollum1 ha scritto:
> https://regex101.com/codegen?language=python

Sì, tutto bello ed utile, ma questo non semplifica una regexp :)

Enrico

___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca e sostituzione con regex

2019-07-08 Per discussione Gollum1
Il 6 luglio 2019 10:00:44 CEST, Enrico Bianchi  ha 
scritto:
>Il 16/06/2019 11:20, Daniele Zambelli ha scritto:
>> Qualcuno può aiutarmi a scrivere la funzione che dato un testo
>produca
>> un testo con le precedenti sostituzioni?
>
>Quando c'è di mezzo un'espressione regolare, l'unica risposta è quella 
>della foto in allegato
>
>
>Enrico

https://regex101.com/codegen?language=python
byez
-- 
gollum1

Inviato dal mio dispositivo Android con K-9 Mail. Perdonate la brevità e gli 
errori, maledetto correttore automatico. 
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca e sostituzione con regex

2019-07-07 Per discussione Enrico Bianchi
Il 16/06/2019 11:20, Daniele Zambelli ha scritto:
> Qualcuno può aiutarmi a scrivere la funzione che dato un testo produca
> un testo con le precedenti sostituzioni?

Quando c'è di mezzo un'espressione regolare, l'unica risposta è quella 
della foto in allegato


Enrico

___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca e sostituzione con regex

2019-06-21 Per discussione Gollum1
Il 20 giugno 2019 23:28:42 CEST, Daniele Zambelli  
ha scritto:

>Ottimo suggerimento, dato che uso re una volta all'anno, i commenti
>possono farmi risparmiare un mucchio di tempo la prossima volta che
>guarderò questo programma.
>
io ho trovato molto comoda una pagina web, in cui incolli il tuo testo di 
prova, e poi, in un apposito campo, fai tutte le tue prove di reg exp, e lui ti 
fornisce il risultato, con evidenziato come le varie parti agiscono suo testo.

in più ti da la possibilità di esportare la reg exp per vari linguaggi.

ora non ho sottomano il link, ma lo trovi sicuramente tra i primi risultati in 
Google usando regexp online editor.

byez
-- 
gollum1

Inviato dal mio dispositivo Android con K-9 Mail. Perdonate la brevità e gli 
errori, maledetto correttore automatico. 
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca e sostituzione con regex

2019-06-20 Per discussione Daniele Zambelli
Il giorno gio 20 giu 2019 alle ore 00:43 Alessandro Dentella
 ha scritto:
> [...]
> posso solo suggerire che per aumentare la leggibilità puoi usare
> re.VERBOSE (*) che ti permette di scrivere il pattern su più righe con i
> commenti:
>
>pattern = re.compile('''
>   (?   \$\$ #  $$formula$$
>   (.*?)#  any text but not greedy!
>   (?   \$\$ # fine formula
>''', flags=re.VERBOSE|re.S)

Ottimo suggerimento, dato che uso re una volta all'anno, i commenti
possono farmi risparmiare un mucchio di tempo la prossima volta che
guarderò questo programma.

Grazie ancora.

-- 

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


Re: [Python] Ricerca e sostituzione con regex

2019-06-19 Per discussione Alessandro Dentella
On Wed, Jun 19, 2019 at 10:24:47PM +0200, Daniele Zambelli wrote:
> Il giorno mar 18 giu 2019 alle ore 16:46 Lorenzo Buonanno
>  ha scritto:
> >
> > Perché contiene un carattere che hai imposto di escludere in [^\$], c'è una 
> > ragione per cui invece di escludere caratteri dentro la stringa non puoi 
> > usare espressioni non greedy come suggerito più volte in questo thread?
>
> La ragione è che non avevo capito. Combinando la tua dritta con quella
> di Marco ho ottenuto questo:
>
> ...
> result = re.sub(r"(? input_text, flags=re.S)
> result = re.sub(r"(? result, flags=re.S)
> ...
>

posso solo suggerire che per aumentare la leggibilità puoi usare
re.VERBOSE (*) che ti permette di scrivere il pattern su più righe con i
commenti:

   pattern = re.compile('''
  (?https://docs.python.org/3.7/library/re.html#re.VERBOSE
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca e sostituzione con regex

2019-06-19 Per discussione Daniele Zambelli
Il giorno mar 18 giu 2019 alle ore 16:46 Lorenzo Buonanno
 ha scritto:
>
> Perché contiene un carattere che hai imposto di escludere in [^\$], c'è una 
> ragione per cui invece di escludere caratteri dentro la stringa non puoi 
> usare espressioni non greedy come suggerito più volte in questo thread?

La ragione è che non avevo capito. Combinando la tua dritta con quella
di Marco ho ottenuto questo:

...
result = re.sub(r"(?https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca e sostituzione con regex

2019-06-18 Per discussione Daniele Zambelli
Il giorno mar 18 giu 2019 alle ore 12:23 Marco Beri
 ha scritto:
>
> On Tue, Jun 18, 2019 at 11:57 AM Daniele Zambelli 
>  wrote:
>>
>>
>> ##result = re.sub(r'\\\$', r'd_o_ll_a_ro', string, flags=re.S)
>> result = re.sub(r'(?>   [...]

Ok, lasciato un solo carattere e funziona in tutti i casi in cui
funzionava prima.

Ma non riesco a capire perché se nell'espressione c'è la stringa "\$"
la seguente istruzione non riconosce l'intera espressione:


...
>>> print(translate(r'espressione con dollaro:~$3^2+4^2=\$5^2$'))
espressione con dollaro:~\(3^2+4^2=\$5^2\)
"""
result = re.sub(r'(?https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca e sostituzione con regex

2019-06-18 Per discussione Marco Beri
On Tue, Jun 18, 2019 at 11:57 AM Daniele Zambelli <
daniele.zambe...@gmail.com> wrote:

>
> ##result = re.sub(r'\\\$', r'd_o_ll_a_ro', string, flags=re.S)
> result = re.sub(r'(? r'\[\1\]',
> string.rstrip(), flags=re.S)
> result = re.sub(r'(? r'\(\1\)',
> result, flags=re.S)
> ##result = re.sub(r'd_o_ll_a_ro', r'\\\$', string)
> return result
>


Già la parte in giallo è sbagliata. Le parentesi quadre elencano un gruppo
di caratteri che vanno ricercati (oppure non cercati se il primo carattere
è ^ ).

Non puoi pensare di mettere due caratteri uguali e pensare che la regex non
te li consideri solo quando doppi.

Purtroppo le regex sono bastarde :-(


-- 
http://beri.it/ - Un blog
http://beri.it/i-miei-libri/ - Qualche libro
http://beri.it/articoli/ - Qualche articolo
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca e sostituzione con regex

2019-06-18 Per discussione Daniele Zambelli
Il giorno lun 17 giu 2019 alle ore 23:16 Marco Beri
 ha scritto:
> [...]
> Positive and Negative Lookbehind
>
> Lookbehind has the same effect, but works backwards. It tells the regex 
> engine to temporarily step backwards in the string, to check if the text 
> inside the lookbehind can be matched there. (? preceded by an "a", using negative lookbehind. It doesn't match cab, but 
> matches the b (and only the b) in bed or debt. (?<=a)b(positive lookbehind) 
> matches the b (and only the b) in cab, but does not match bed or debt.

Grazie per la grande disponibilità!

Ora i dollari esterni alle espressioni vengono riconosciuti regolarmente,
Ma se il dollaro è all'interno di un'espressione la sostituzione non
viene fatta.

Per comodità copioincollo l'intero programmino con i test compresi:

8<---
import re

def translate(string):
"""translate:
""  >  "\[\]"
"$$"  >  "\(\)"
>>> print(translate(r''))
\[\]
>>> print(translate(r'$$'))
\(\)
>>> 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\)
>>> print(translate(r'dollaro: \$ espressione senza dollaro:~$3^2+4^2=5^2$'))
dollaro: \$ espressione senza dollaro:~\(3^2+4^2=5^2\)
>>> print(translate(r'''dollaro: \$, espressione senza \$:
... $$a^2=b^2+c^2$$'''))
dollaro: \$, espressione senza \$:
\[a^2=b^2+c^2\]
>>> print(translate(r'''dollaro: \$, espressione con \$:
... $$a^2=\$b^2+c^2$$'''))
dollaro: \$, espressione con \$:
\[a^2=\$b^2+c^2\]
>>> print(translate(r'dollaro: \$ espressione con dollaro:~$3^2+4^2=\$5^2$'))
dollaro: \$ espressione con dollaro:~\(3^2+4^2=\$5^2\)
"""
##result = re.sub(r'\\\$', r'd_o_ll_a_ro', string, flags=re.S)
result = re.sub(r'(?8

Penso che l'errore sia nell'espressione all'interno della quadra:

[^(?https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca e sostituzione con regex

2019-06-17 Per discussione Marco Beri
On Mon, 17 Jun 2019, 22:57 Daniele Zambelli, 
wrote:

Mi resta ancora un problema:
>
> Nella situazione (poco probabile) che nel sorgente LaTeX ci sia la
> sequenza "\$" in questo caso il dollaro non va considerato come un
> delimitatore di formule. Come posso fare a convincere re a saltare i
> dollari preceduti da "\"?
>
> È possibile?
>

Positive and Negative Lookbehind

Lookbehind has the same effect, but works backwards. It tells the regex
engine to temporarily step backwards in the string, to check if the text
inside the lookbehind can be matched there. (?___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca e sostituzione con regex

2019-06-17 Per discussione Pietro Brunetti
Dopo le * prova ad aggiungere i ?. Mi sembra che qualcuno lo avesse
proposto...
Non funziona?

Il lun 17 giu 2019, 22:57 Daniele Zambelli  ha
scritto:

>
> Il giorno dom 16 giu 2019 alle ore 20:20 Marco Beri 
> ha scritto:
>
>> On Sun, 16 Jun 2019, 19:32 Daniele Zambelli, 
>> wrote:
>>
>>> 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...
>>>
>>
>>
>> Alla peggio puoi iterare fino a che non sostituisci nulla.
>>
>> Vai sul sicuro così 
>>
>
> No, così non funziona...
>
> Ma ho risolto non facendo entrare nel gruppo i simboli cercati:
>
> result = re.sub(r'\$\$(.[^\$\$]*)\$\$',
> r'\[\1\]',
> string.rstrip(), flags=re.S)
> result = re.sub(r'\$(.[^\$]*)\$',
> r'\(\1\)',
> result, flags=re.S)
> return result
>
> Mi resta ancora un problema:
>
> Nella situazione (poco probabile) che nel sorgente LaTeX ci sia la
> sequenza "\$" in questo caso il dollaro non va considerato come un
> delimitatore di formule. Come posso fare a convincere re a saltare i
> dollari preceduti da "\"?
>
> È possibile?
>
> --
>
> 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
>
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca e sostituzione con regex

2019-06-17 Per discussione Daniele Zambelli
Il giorno dom 16 giu 2019 alle ore 20:20 Marco Beri 
ha scritto:

> On Sun, 16 Jun 2019, 19:32 Daniele Zambelli, 
> wrote:
>
>> 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...
>>
>
>
> Alla peggio puoi iterare fino a che non sostituisci nulla.
>
> Vai sul sicuro così 
>

No, così non funziona...

Ma ho risolto non facendo entrare nel gruppo i simboli cercati:

result = re.sub(r'\$\$(.[^\$\$]*)\$\$',
r'\[\1\]',
string.rstrip(), flags=re.S)
result = re.sub(r'\$(.[^\$]*)\$',
r'\(\1\)',
result, flags=re.S)
return result

Mi resta ancora un problema:

Nella situazione (poco probabile) che nel sorgente LaTeX ci sia la sequenza
"\$" in questo caso il dollaro non va considerato come un delimitatore di
formule. Come posso fare a convincere re a saltare i dollari preceduti da
"\"?

È possibile?

-- 

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


Re: [Python] Ricerca e sostituzione con regex

2019-06-16 Per discussione Marco Beri
On Sun, 16 Jun 2019, 19:32 Daniele Zambelli, 
wrote:

> 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...
>


Alla peggio puoi iterare fino a che non sostituisci nulla.

Vai sul sicuro così 

Ciao.
Marco.
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca e sostituzione con regex

2019-06-16 Per discussione Pietro Brunetti
Devi vedere come fare le regex no gready... Di default cercano la stringa
massima che corrisponde alla definizione.
(Scusate il quoting, ma non ho voglia di cancellare tutto lo stack dal
cell...)

Il dom 16 giu 2019, 19:54 Daniele Zambelli  ha
scritto:

> Il giorno dom 16 giu 2019 alle ore 19:32 Daniele Zambelli
>  ha scritto:
> > [...]
>
> L'avrei risolta così:
>
> result = re.sub(r'\$\$(.[^\$\$]*)\$\$',
> r'\[\1\]',
> string.rstrip(), flags=re.S)
> result = re.sub(r'\$(.[^\$]*)\$',
> r'\(\1\)',
> result, flags=re.S)
>
> Non so se la soluzione è sensata, cosa dite?
>
> --
>
> 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
>
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca e sostituzione con regex

2019-06-16 Per discussione Daniele Zambelli
Il giorno dom 16 giu 2019 alle ore 19:32 Daniele Zambelli
 ha scritto:
> [...]

L'avrei risolta così:

result = re.sub(r'\$\$(.[^\$\$]*)\$\$',
r'\[\1\]',
string.rstrip(), flags=re.S)
result = re.sub(r'\$(.[^\$]*)\$',
r'\(\1\)',
result, flags=re.S)

Non so se la soluzione è sensata, cosa dite?

-- 

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


Re: [Python] Ricerca e sostituzione con regex

2019-06-16 Per discussione Daniele Zambelli
Il giorno dom 16 giu 2019 alle ore 18:31 Lorenzo Buonanno
 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:
""  >  "\[\]"
"$$"  >  "\(\)"
>>> print(translate(r''))
\[\]
>>> print(translate(r'$$'))
\(\)
>>> 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


Re: [Python] Ricerca e sostituzione con regex

2019-06-16 Per discussione Leo Lo Tito
>
>
> Aperta, aperta, chiusa, chiusa.


Beh si hai ragione 
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca e sostituzione con regex

2019-06-16 Per discussione Marco Beri
On Sun, 16 Jun 2019, 18:26 Leo Lo Tito,  wrote:

> Ciao, si potresti usare le espressioni regolari, ma sarà il caldo a farmi
> ragionare così... utilizzerei due "funzioncine" con lo split e un ciclo
> pari/dispari dove pari, inserisci l'apertura e dispari la chiusura degli
> elementi.
>


Aperta, aperta, chiusa, chiusa.

In questo caso il pari/dispari non funzionerebbe.

Ciao.
Marco.
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca e sostituzione con regex

2019-06-16 Per discussione Lorenzo Buonanno
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)

On Sun, Jun 16, 2019 at 3:50 PM Daniele Zambelli 
wrote:

> Il giorno dom 16 giu 2019 alle ore 14:06 Giovanni Vittorio Spina
>  ha scritto:
> >
> > Ponendo ad esempio
> > a = " pippo $$"
> >
> > Si può avere il testo corretto con il seguente comando
> > b = a.replace(“$$<“,  "\\[<“).replace(“>$$”, “>\\]").replace(“$<”,
> “\\(<”).replace(“>$”, “>\\)”)
>
> Grazie per le indicazioni, però non mi sono spiegato bene. Con
> "" intendevo una qualunque formula matematica LaTeX:
>
> Il testo da modificare potrebbe essere:
>
> \begin{definizione}
> $$
> m \times n = \begin{cases}
>  0 & se \quad n = 0\\
>  m & se \quad n = 1\\
>  \underbrace{m + m + \dots + m}_{\text{n volte}} & \mbox{ negli altri casi}
> \end{cases}$$
> \end{definizione}
>
> \begin{itemize*}
>  \item \emph{Commutativa}: $a \cdot b = b \cdot a$
>  \item \emph{Associativa}: $(a \cdot b) \cdot c = a \cdot (b \cdot c)$
>  \item \emph{Elemento neutro} $a \cdot 1 = 1 \cdot a = a$
> \end{itemize*}
>
> \begin{definizione}
> Dati due numeri naturali~$m$ e~$n$, con~$n \neq 0$, la divisione associa
> un terzo numero naturale~$q$, se esiste, che moltiplicato per ad~$n$ dà
> come prodotto~$m$.
> Si scrive~$n : m = q$.
> \end{definizione}
>
> e dovrebbe diventare:
>
> \begin{definizione}
> \[
> m \times n = \begin{cases}
>  0 & se \quad n = 0\\
>  m & se \quad n = 1\\
>  \underbrace{m + m + \dots + m}_{\text{n volte}} & \mbox{ negli altri casi}
> \end{cases}\]
> \end{definizione}
>
> \begin{itemize*}
>  \item \emph{Commutativa}: \(a \cdot b = b \cdot a\)
>  \item \emph{Associativa}: \((a \cdot b) \cdot c = a \cdot (b \cdot c)\)
>  \item \emph{Elemento neutro} \(a \cdot 1 = 1 \cdot a = a\)
> \end{itemize*}
>
> \begin{definizione}
> Dati due numeri naturali~\(m\) e~\(n\), con~\(n \neq 0\), la divisione
> associa
> un terzo numero naturale~\(q\), se esiste, che moltiplicato per ad~\(n\) dà
> come prodotto~\(m\).
> Si scrive~\(n : m = q\).
> \end{definizione}
>
> Quindi dovrei identificare una coppia di coppie di dollari e
> trasformare la prima con la stringa: "\[" e la seconda con la stringa
> "\]":
>
> $$a^2=b^2+c^2$$   --->   \[a^2=b^2+c^2\]
> e
> $5+7=12$   --->   \(5+7=12\)
>
> È per questo che pensavo fosse più un lavoro da espressioni regolari
> che da semplice sostituzione.
>
> Grazie.
>
> --
>
> 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
>
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca e sostituzione con regex

2019-06-16 Per discussione Leo Lo Tito
Ciao, si potresti usare le espressioni regolari, ma sarà il caldo a farmi
ragionare così... utilizzerei due "funzioncine" con lo split e un ciclo
pari/dispari dove pari, inserisci l'apertura e dispari la chiusura degli
elementi.

> leo
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca e sostituzione con regex

2019-06-16 Per discussione Daniele Zambelli
Il giorno dom 16 giu 2019 alle ore 14:06 Giovanni Vittorio Spina
 ha scritto:
>
> Ponendo ad esempio
> a = " pippo $$"
>
> Si può avere il testo corretto con il seguente comando
> b = a.replace(“$$<“,  "\\[<“).replace(“>$$”, “>\\]").replace(“$<”, 
> “\\(<”).replace(“>$”, “>\\)”)

Grazie per le indicazioni, però non mi sono spiegato bene. Con
"" intendevo una qualunque formula matematica LaTeX:

Il testo da modificare potrebbe essere:

\begin{definizione}
$$
m \times n = \begin{cases}
 0 & se \quad n = 0\\
 m & se \quad n = 1\\
 \underbrace{m + m + \dots + m}_{\text{n volte}} & \mbox{ negli altri casi}
\end{cases}$$
\end{definizione}

\begin{itemize*}
 \item \emph{Commutativa}: $a \cdot b = b \cdot a$
 \item \emph{Associativa}: $(a \cdot b) \cdot c = a \cdot (b \cdot c)$
 \item \emph{Elemento neutro} $a \cdot 1 = 1 \cdot a = a$
\end{itemize*}

\begin{definizione}
Dati due numeri naturali~$m$ e~$n$, con~$n \neq 0$, la divisione associa
un terzo numero naturale~$q$, se esiste, che moltiplicato per ad~$n$ dà
come prodotto~$m$.
Si scrive~$n : m = q$.
\end{definizione}

e dovrebbe diventare:

\begin{definizione}
\[
m \times n = \begin{cases}
 0 & se \quad n = 0\\
 m & se \quad n = 1\\
 \underbrace{m + m + \dots + m}_{\text{n volte}} & \mbox{ negli altri casi}
\end{cases}\]
\end{definizione}

\begin{itemize*}
 \item \emph{Commutativa}: \(a \cdot b = b \cdot a\)
 \item \emph{Associativa}: \((a \cdot b) \cdot c = a \cdot (b \cdot c)\)
 \item \emph{Elemento neutro} \(a \cdot 1 = 1 \cdot a = a\)
\end{itemize*}

\begin{definizione}
Dati due numeri naturali~\(m\) e~\(n\), con~\(n \neq 0\), la divisione associa
un terzo numero naturale~\(q\), se esiste, che moltiplicato per ad~\(n\) dà
come prodotto~\(m\).
Si scrive~\(n : m = q\).
\end{definizione}

Quindi dovrei identificare una coppia di coppie di dollari e
trasformare la prima con la stringa: "\[" e la seconda con la stringa
"\]":

$$a^2=b^2+c^2$$   --->   \[a^2=b^2+c^2\]
e
$5+7=12$   --->   \(5+7=12\)

È per questo che pensavo fosse più un lavoro da espressioni regolari
che da semplice sostituzione.

Grazie.

-- 

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


Re: [Python] Ricerca e sostituzione con regex

2019-06-16 Per discussione Giovanni Vittorio Spina
Ponendo ad esempio 
a = " pippo $$"

Si può avere il testo corretto con il seguente comando
b = a.replace(“$$<“,  "\\[<“).replace(“>$$”, “>\\]").replace(“$<”, 
“\\(<”).replace(“>$”, “>\\)”)

Se a è il testo completo con la vecchia sintassi, b è il testo con la sintassi 
sostituita.
L’ordine del replace è fondamentale per evitare che venga sostituito il testo 
$$< con $\(< saltando il primo dollaro.
Le doppie \\ servono per identificare la \ e non un carattere speciale, es \n 
come accapo.
Puoi salvare  il risultato su un file:

Handle = open(“nomefile.ext”, “wb”)
Handle.write(b)
Handle.close()

E hai il nuovo testo pronto.
Ciao
V


> Il giorno 16 giu 2019, alle ore 11:20, Daniele Zambelli 
>  ha scritto:
> 
> ""  >  "\[\]"
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python