Re: [Python] trova e sostituisci

2010-04-16 Per discussione Valerio Pachera
Avrei bisogno di una cosa tipo

stringa = ' questa stringa  ha tabulazionie più spazi nel mezzo e
/ alla fine   

print stringa.replace('\t', '').strip()

questa concatenazione rimuove tutte le taulazione e tutti gli spazi ad
_inizio_ e _fine_ stringa.
Vorrei essere sicuro di lasciare un solo spazio fra le parole.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trova e sostituisci

2010-04-16 Per discussione Marco Beri
2010/4/16 Valerio Pachera siri...@gmail.com

 Avrei bisogno di una cosa tipo

 stringa = ' questa stringa  ha tabulazionie più spazi nel mezzo e
 / alla fine   

 print stringa.replace('\t', '').strip()


re.sub('[ \t]+', ' ', stringa).strip()

Ciao.
Marco.

-- 
http://thinkcode.tv/gratis - Capire in 15 minuti cosa può fare Python
http://stacktrace.it - Aperiodico di resistenza informatica
http://python.thinkcode.tv - Videocorso di Python
http://beri.it - Blog di una testina di vitello
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trova e sostituisci

2010-04-16 Per discussione Marco Beri
2010/4/16 Marco Beri marcob...@gmail.com

 2010/4/16 Valerio Pachera siri...@gmail.com

 Avrei bisogno di una cosa tipo

 stringa = ' questa stringa  ha tabulazionie più spazi nel mezzo e
 / alla fine   

 print stringa.replace('\t', '').strip()


 re.sub('[ \t]+', ' ', stringa).strip()


Ovviamente prima:

import re

Ciao.
Marco.

-- 
http://thinkcode.tv/gratis - Capire in 15 minuti cosa può fare Python
http://stacktrace.it - Aperiodico di resistenza informatica
http://python.thinkcode.tv - Videocorso di Python
http://beri.it - Blog di una testina di vitello
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trova e sostituisci

2010-04-16 Per discussione Daniele Varrazzo
On Fri, 16 Apr 2010 11:11:03 +0200, Valerio Pachera siri...@gmail.com
wrote:
 Avrei bisogno di una cosa tipo
 
 stringa = ' questa stringa  ha tabulazionie più spazi nel mezzo e
 / alla fine   
 
 print stringa.replace('\t', '').strip()
 
 questa concatenazione rimuove tutte le taulazione e tutti gli spazi ad
 _inizio_ e _fine_ stringa.
 Vorrei essere sicuro di lasciare un solo spazio fra le parole.

In [1]: s =  questa stringa  ha tabulazioni  \t  e piu' spazi nel mezzo e
alla fine  

In [2]:  .join(s.split())
Out[2]: questa stringa ha tabulazioni e piu' spazi nel mezzo e alla fine

-- 
Daniele Varrazzo - Develer S.r.l. 
http://www.develer.com
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trova e sostituisci

2010-04-16 Per discussione Marco Beri
2010/4/16 Daniele Varrazzo p...@develer.com

 On Fri, 16 Apr 2010 11:11:03 +0200, Valerio Pachera siri...@gmail.com
 wrote:
  Avrei bisogno di una cosa tipo
 
  stringa = ' questa stringa  ha tabulazionie più spazi nel mezzo e
  / alla fine   
 
  print stringa.replace('\t', '').strip()
 
  questa concatenazione rimuove tutte le taulazione e tutti gli spazi ad
  _inizio_ e _fine_ stringa.
  Vorrei essere sicuro di lasciare un solo spazio fra le parole.

 In [1]: s =  questa stringa  ha tabulazioni  \t  e piu' spazi nel mezzo e
 alla fine  

 In [2]:  .join(s.split())
 Out[2]: questa stringa ha tabulazioni e piu' spazi nel mezzo e alla fine


Ma dai? Grandissimo Piro! E molto più pythonico.
Non lo sapevo che lo split prendeva di default anche i tab:
split(...)
S.split([sep [,maxsplit]]) - list of strings

Return a list of the words in the string S, using sep as the
delimiter string.  If maxsplit is given, at most maxsplit
splits are done. If sep is not specified or is None, any
whitespace string is a separator and empty strings are removed
from the result.

Ciao.
Marco.

-- 
http://thinkcode.tv/gratis - Capire in 15 minuti cosa può fare Python
http://stacktrace.it - Aperiodico di resistenza informatica
http://python.thinkcode.tv - Videocorso di Python
http://beri.it - Blog di una testina di vitello
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trova e sostituisci

2010-04-16 Per discussione Daniele Varrazzo
On Fri, 16 Apr 2010 12:02:48 +0200, Marco Beri marcob...@gmail.com
wrote:
 2010/4/16 Daniele Varrazzo p...@develer.com
 On Fri, 16 Apr 2010 11:11:03 +0200, Valerio Pachera siri...@gmail.com
 wrote:

 Vorrei essere sicuro di lasciare un solo spazio fra le parole.

 In [2]:  .join(s.split())

 Non lo sapevo che lo split prendeva di default anche i tab:

Non solo: split() senza argomento collassa i whitespace: whitespace
consecutivi (tab, spazi, cr, lf...) contano come una sola separazione.
Usando una stringa come separatore invece le occorrenze consecutive non
vengono collassate, né vengono strippate dagli estremi della stringa.

In [1]: '|||x||y|'.split('|')
Out[1]: ['', '', '', 'x', '', 'y', '']

-- 
Daniele Varrazzo - Develer S.r.l. 
http://www.develer.com
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trova e sostituisci

2010-04-16 Per discussione Valerio Pachera
Il 16 aprile 2010 15.19, Daniele Varrazzo p...@develer.com ha scritto:
 Non solo: split() senza argomento collassa i whitespace: whitespace
 consecutivi (tab, spazi, cr, lf...) contano come una sola separazione.

Perfetto!!
Grazie!
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] trova e sostituisci

2010-04-15 Per discussione Valerio Pachera
Ciao a tutti, vi posso dire con piacere che la mia piccola
applicazione web sta cominciando a prendere vita.
Ora apro una nuova discussione specifica per i file.
Sto leggendo la documentazione:
http://docs.python.org/library/stdtypes.html#bltin-file-objects
http://diveintopython.org/file_handling/file_objects.html
ma faccio fatica a trovare un modo semplice per fare quello che mi
serve. Mi spiego:

ho un file di configurazione che devo leggere, trovare una specifica
riga, verificare se su questa riga è presente un valore. Se non c'è,
lo devo appendere alla riga.
Partiamo da un esempio:


gruppo disney
...
...
membri pippo,pluto
...
...
---

Andiamo per step:

1) cerchiamo _solo_ la parola chiave 'membri'

f = open(file.txt,r)
for line in f.readlines()
if 'membri' in line: print line
f.close

questo funziona

2) Una volta individuata la riga vorrei rimuoverla e sostituirla con
quella elaborata


f = open(file.txt,w)
for line in f.readlines()
if 'membri' in line:
nuova = line + 'hello world'
#rimuovi line
f.writeline(nuova)
f.close

E' possibile fare qualcosa del genere mentre si scorre il file?
Come consigliare altrimenti di fare?

Successivamente dovrò inoltre poter rimuovere nomi dalla riga 'membri'.

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


Re: [Python] trova e sostituisci

2010-04-15 Per discussione Vitto
Ciao,
ti chiedo scusa se ti dico una cosa banale ma sono nuovo di python.
Di recente ho avuto anche io una esigenza simile in un file di
configurazione.
Ti consiglio il modulo ConfigParser che fa proprio quello che chiedi a patto
che il file abbia una determinata struttura.
Spero di averti aiutato.

Il giorno 15 aprile 2010 12.32, Valerio Pachera siri...@gmail.com ha
scritto:

 Ciao a tutti, vi posso dire con piacere che la mia piccola
 applicazione web sta cominciando a prendere vita.
 Ora apro una nuova discussione specifica per i file.
 Sto leggendo la documentazione:
 http://docs.python.org/library/stdtypes.html#bltin-file-objects
 http://diveintopython.org/file_handling/file_objects.html
 ma faccio fatica a trovare un modo semplice per fare quello che mi
 serve. Mi spiego:

 ho un file di configurazione che devo leggere, trovare una specifica
 riga, verificare se su questa riga è presente un valore. Se non c'è,
 lo devo appendere alla riga.
 Partiamo da un esempio:

 
 gruppo disney
 ...
 ...
 membri pippo,pluto
 ...
 ...
 ---

 Andiamo per step:

 1) cerchiamo _solo_ la parola chiave 'membri'

 f = open(file.txt,r)
 for line in f.readlines()
if 'membri' in line: print line
 f.close

 questo funziona

 2) Una volta individuata la riga vorrei rimuoverla e sostituirla con
 quella elaborata


 f = open(file.txt,w)
 for line in f.readlines()
if 'membri' in line:
nuova = line + 'hello world'
#rimuovi line
f.writeline(nuova)
 f.close

 E' possibile fare qualcosa del genere mentre si scorre il file?
 Come consigliare altrimenti di fare?

 Successivamente dovrò inoltre poter rimuovere nomi dalla riga 'membri'.

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

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


Re: [Python] trova e sostituisci

2010-04-15 Per discussione Valerio Pachera
Il 15 aprile 2010 12.39, Vitto natha...@gmail.com ha scritto:
 Ti consiglio il modulo ConfigParser che fa proprio quello che chiedi a patto
 che il file abbia una determinata struttura.

Vado subito a vedere!
Grazie!

PS:
Avevo già addocchiato la funzione

string.replace(str, old, new[, maxreplace])¶
Return a copy of string str with all occurrences of substring old
replaced by new. If the optional argument maxreplace is given, the
first maxreplace occurrences are replaced.

E anche l'oggetto Template che possono tornare veramente utili.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trova e sostituisci

2010-04-15 Per discussione Vitto
Se vuoi guardare ConfigParser ti consiglio questo link.
Veloce e semplice:
http://www.doughellmann.com/PyMOTW/ConfigParser/

Come ti dicevo richiede una struttura del file particolare per cui se hai
dei file di configurazione già in essere che non puoi modificare allora
direi che lo string.replace fa al caso tuo.

Non aggiungo altro.
Son già emozionato per aver mandato la mia prima risposta in lista e non
solo domande :-)


2010/4/15 Valerio Pachera siri...@gmail.com

 Il 15 aprile 2010 12.39, Vitto natha...@gmail.com ha scritto:
  Ti consiglio il modulo ConfigParser che fa proprio quello che chiedi a
 patto
  che il file abbia una determinata struttura.

 Vado subito a vedere!
 Grazie!

 PS:
 Avevo già addocchiato la funzione

 string.replace(str, old, new[, maxreplace])¶
Return a copy of string str with all occurrences of substring old
 replaced by new. If the optional argument maxreplace is given, the
 first maxreplace occurrences are replaced.

 E anche l'oggetto Template che possono tornare veramente utili.
 ___
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/mailman/listinfo/python

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


Re: [Python] trova e sostituisci

2010-04-15 Per discussione Valerio Pachera
Il 15 aprile 2010 12.51, Vitto natha...@gmail.com ha scritto:
 Come ti dicevo richiede una struttura del file particolare per cui se hai
 dei file di configurazione già in essere che non puoi modificare allora
 direi che lo string.replace fa al caso tuo.

Ho trovato anch'io un buon esempio
(http://effbot.org/librarybook/configparser.htm) ma, come hai
giustamente scritto, il mio file di configurazione ha una sintassi
diversa :(
Ad ogni modo posso prendere spunto da questo modulo e creare una
classe che fa al caso mio (tempo permettendo).
Il mio problema al momento consiste nel scrivere linee di testo in un
file già esistente.
Altrimenti devo caricare l'intero file in una variabile e cercare di
cavarmela con replace ma non mi sembra molto adeguato.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trova e sostituisci

2010-04-15 Per discussione Marco Mariani
On 04/15/2010 12:39 PM, Vitto wrote:

 f = open(file.txt,w)
 for line in f.readlines()
if 'membri' in line:
nuova = line + 'hello world'
#rimuovi line
f.writeline(nuova)
 f.close

 E' possibile fare qualcosa del genere mentre si scorre il file?



No, devi scrivere un file nuovo.


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


Re: [Python] trova e sostituisci

2010-04-15 Per discussione Valerio Turturici
Valerio Pachera ha scritto:
 Ciao a tutti, vi posso dire con piacere che la mia piccola
 applicazione web sta cominciando a prendere vita.
 Ora apro una nuova discussione specifica per i file.
 Sto leggendo la documentazione:
 http://docs.python.org/library/stdtypes.html#bltin-file-objects
 http://diveintopython.org/file_handling/file_objects.html
 ma faccio fatica a trovare un modo semplice per fare quello che mi
 serve. Mi spiego:

 ho un file di configurazione che devo leggere, trovare una specifica
 riga, verificare se su questa riga è presente un valore. Se non c'è,
 lo devo appendere alla riga.
 Partiamo da un esempio:

 
 gruppo disney
 ...
 ...
 membri pippo,pluto
 ...
 ...
 ---

 Andiamo per step:

 1) cerchiamo _solo_ la parola chiave 'membri'

 f = open(file.txt,r)
 for line in f.readlines()
 if 'membri' in line: print line
 f.close

 questo funziona

 2) Una volta individuata la riga vorrei rimuoverla e sostituirla con
 quella elaborata


 f = open(file.txt,w)
 for line in f.readlines()
 if 'membri' in line:
 nuova = line + 'hello world'
 #rimuovi line
 f.writeline(nuova)
 f.close

 E' possibile fare qualcosa del genere mentre si scorre il file?
 Come consigliare altrimenti di fare?
   
Devi creare un nuovo file su cui scrivere. Una cosa tipo:

out = open(file_out.txt, 'w')

for line in open(file.txt):
  if 'membri' in line:
nuovo = line + 'hello world\n'
out.write(nuovo)
  out.write(line)

out.close()


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