[Linuxtrent] Re: aiuto con python

  • From: Lele Gaifax <lele@xxxxxxxxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Wed, 29 Oct 2014 20:03:14 +0100

Marco Ciampa <ciampix@xxxxxxxxx> writes:

> In pratica le immagini capitano in singole righe html dove ad un certo
> punto si trovano delle righe:
>
> ..... style="margin-bottom: 0cm"><img
> src="data:image/png;base64,iVBOR...............SuQmCC" name="graphics1"
> align="left" width="588" height="404" border="0"><br clear...
>
> l'idea è di sostituire questa <img src="data ..." name=graphics1"...> con
> la stessa cosa ma salvando l'immagine decodificata .png in
> images/graphics1.png e cambiare il link in <img src="images/graphics1.png" 
> ...> 
>
> Ho buttato li tutto per dare un'idea di dove stavo andando a parare.
> Premetto che non sono mai stato un mago neanche delle espressioni
> regolari.

Come ha detto Daniele, spesso quando hai un problema e pensi di
risolverlo con le regular expression... ti ritrovi con *due* problemi
:-)

Per aiutarti, sarebbe utile avere uno spezzone del file in ingresso,
perché solo così si può avere un'idea precisa del dove andare a parare.

Con lo snippet che hai incluso ad esempio, non è chiaro se dopo il tag
"<img" ci sia un "a capo": se così fosse, tutta la logica che hai usato
cade, perché leggendo una riga alla volta non puoi venircene fuori. Se
quei tag fossero effettivamente "spezzati" su più righe, hai bisogno
dell'opzione MULTILINE.

Se il file in ingresso non è esagerato (cioè, centinaia di megabytes),
io lo leggerei tutto d'un fiato, e userei un search/replace[*]
passandoci una funzione che estrae il "src", ne decodifica il base64,
scrive nel file e lo sostituisce con il path del file.

Valgono poi le osservazioni sullo stile fatte da Daniele, ma posso
intravvedere la tua provenienza 8-)

ciao, lele.

[*] https://docs.python.org/3.4/library/re.html#re.sub
-- 
nickname: Lele Gaifax | Quando vivrò di quello che ho pensato ieri
real: Emanuele Gaifas | comincerò ad aver paura di chi mi copia.
lele@xxxxxxxxxxxxxxx  |                 -- Fortunato Depero, 1929.

-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: