Re: [Python] alternative ad eval

2014-03-18 Per discussione Balan Victor


 Ehm.. con la grammatica del linguaggio che vuoi parsare.

 Ma lascia che te lo dica... secondo me rischi di ficcarti in un mezzo
 ginepraio. Il fatto che tu abbia bisogno di questo secondo campo cosi'
 flessibile non ottimo indice che le cose saranno facili.

 Per il resto puoi definirti un linguaggio che fa tutto quello che ti pare,
 ma non sarebbe meglio limitarsi ad un set di check prefabbricati?


ho provato a fare qualcosa http://pastebin.com/6038GUEP#
però come parser immagino non intendevi proprio questo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] alternative ad eval

2014-03-18 Per discussione Riccardo Lemmi
Balan Victor wrote:

 Ho un array di tuple cosi formate da 3 elementi:
 (int|float|boolean|string|datetime|..., string, boolean). Es:
 
 [
  (10, value = 1, True),
  (Ciao, o in value, True),
  (True, value == False, False),
  (92.5f, value = 92.0f, True),
 ]
 Il primo elemento della tupla può essere qualunque tipo o classe di
 python. Il secondo elemento è una espressione da applicare sulla tupla
 e che deve restituire True or False(value si riferisce al primo
 elemento della tupa) Il terzo elemento è il risultato dell'operazione
 appena sopra.
 
 A intervalli regolari ho bisogno di scorrere l'array sopra e
 aggiornare il valore del terzo elemento.
 Ho pensato di usare eval in questo modo:
 
 def check_status(value, eval_string):
   rc =  eval(eval_string)
   if rc is not bool: raise WrongEvalString()
   return rc
 
 Conosco i rischi di eval e vorrei evitare di usarlo però non riesco a
 trovare nulla di altrettanto semplice e con le stesse potenzialità.
 
 NB: In realtà la stringa che fa la validazione può essere impostata
 solo da qualcuno di autorizzato quindi il rischio che mi cancelli
 tutto il fs non ci dovrebbe essere, e non dovrebbero nemmeno fare
 operazioni del tipo value ** value però in ogni caso vorrei trovare
 qualcosa che mi metta al sicuro da questo tipo di operazioni.
 
 grazie

Alcune librerie ci sono, ad esempio:

  https://pypi.python.org/pypi/RestrictedPython

ce ne sono anche altre: cerca restricted python su pypi.
-- 
   Riccardo Lemmi

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


Re: [Python] alternative ad eval

2014-03-18 Per discussione enrico franchi
2014-03-18 8:14 GMT+00:00 Balan Victor balan.vict...@gmail.com:

 però come parser immagino non intendevi proprio questo


Siccome a naso quello che vuoi fare e' un semplice expression language, hai
comunque bisogno, a mio avviso di un vero parser.
Davvero, e' roba facile da scrivere, una volta che usi la libreria giusta,
e' piu' robusto e quando si spacca si capisce meglio perche'.

Non sono sicuro che RestrictedPython sia *veramente* sicuro.

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


Re: [Python] alternative ad eval

2014-03-18 Per discussione Lorenzo Sutton

On 17/03/2014 22:57, Balan Victor wrote:

Ho un array di tuple cosi formate da 3 elementi:
(int|float|boolean|string|datetime|..., string, boolean). Es:

[
  (10, value = 1, True),
  (Ciao, o in value, True),
  (True, value == False, False),
  (92.5f, value = 92.0f, True),
]
Il primo elemento della tupla può essere qualunque tipo o classe di python.
Il secondo elemento è una espressione da applicare sulla tupla e che
deve restituire True or False(value si riferisce al primo elemento della
tupa)
Il terzo elemento è il risultato dell'operazione appena sopra.

A intervalli regolari ho bisogno di scorrere l'array sopra e aggiornare
il valore del terzo elemento.


IMHO Sarebbe sempre bello avere un po' più di contesto in questi casi 
per capire qual è l'obbiettivo finale... Tipo in che contesto girerà il 
codice, chi/cosa fornirà input, quale sarà l'output ecc..

Almeno, ovviamente, che non sia un quesito puramente accademico :)

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


Re: [Python] alternative ad eval

2014-03-18 Per discussione Balan Victor

 Siccome a naso quello che vuoi fare e' un semplice expression language,
 hai comunque bisogno, a mio avviso di un vero parser.
 Davvero, e' roba facile da scrivere, una volta che usi la libreria giusta,
 e' piu' robusto e quando si spacca si capisce meglio perche'.


quindi pyparsing?
Facili da scrivere ... se uno ha basi solide sull'argomento. Io che, a
parte un po su wikipedia, sono completamente ignorante nella materia mi
trovo un po spaesato XD

ora cmq provo a vedere se riesco a creare qualcosina con pyparsing.

Alcune librerie ci sono, ad esempio:
   https://pypi.python.org/pypi/RestrictedPython
 ce ne sono anche altre: cerca restricted python su pypi.


Ho dato un'occhiata e, anche se fosse sicuro al 100%, non mi risolve il
secondo problema: ossia evitare operazioni del tipo 1 * 10. Come
ho scritto nel primo post gli utenti che generano queste stringhe sono solo
utenti autorizzati. Quindi è difficile che facciano cose stupide. E'
molto più facile che commettano errori che possano saturare la macchina...
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] alternative ad eval

2014-03-18 Per discussione Dario Bertini
Sarebbe interessante vedere i requisiti per capire se prevedano
effettivamente che l'utente possa passare qualunque oggetto python
(magari da loro definito)...

comunque:

2014-03-18 9:14 GMT+01:00 Balan Victor balan.vict...@gmail.com:

 Ehm.. con la grammatica del linguaggio che vuoi parsare.

 Ma lascia che te lo dica... secondo me rischi di ficcarti in un mezzo
 ginepraio. Il fatto che tu abbia bisogno di questo secondo campo cosi'
 flessibile non ottimo indice che le cose saranno facili.

 Per il resto puoi definirti un linguaggio che fa tutto quello che ti pare,
 ma non sarebbe meglio limitarsi ad un set di check prefabbricati?


 ho provato a fare qualcosa http://pastebin.com/6038GUEP#
 però come parser immagino non intendevi proprio questo



Come parser è parecchio semplicistico, ma se davvero hai sempre solo

op space value

può bastare

ovviamente, perdi la possibilità di usare l'intera algebra booleana se
ti limiti ad una sola operazione per espressione

piccoli appunti:

- usa split() senza argomenti, se è possibile che op e value siano
separati da più caratteri di whitespace
- `True if re.match(pattern, _string) else False` non è necessario,
basta `bool(re.match(pattern, _string))`... potresti scrivere
str: {
  'match': lambda *a: bool(re.match(*a))
}
- type(a) e type(True) non restituiscono string e boolean, ma str e bool

per il resto, se questa non è un'api e l'utente ci deve interagire
tramite un file di configurazione/una gui... come ottieni il value da
confrontare?

mi spiego: dovresti parsare anche il valore fornito

eval(string.split()[0]) ovviamente non è sufficiente per impedire che
vengano fornite delle espressioni, invece che dei semplici valori,
visto che questo filtrerebbe anche stringhe contenenti spazi

dai un'occhiata al modulo ast:
http://docs.python.org/3.4/library/ast.html

-- 
xmpp: berda...@gmail.com
bitmessage: BM-2cTYXfGiSTsnx3righ6aHcJSWe4MV17jDP
gpg fingerprint: 3F8D53518012716C4EEF7DF67B498306B3BF75A0 (used just
for signing commits)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] alternative ad eval

2014-03-18 Per discussione Manlio Perillo
2014-03-17 22:57 GMT+01:00 Balan Victor balan.vict...@gmail.com:

 Ho un array di tuple cosi formate da 3 elementi:
 (int|float|boolean|string|datetime|..., string, boolean). Es:

 [
  (10, value = 1, True),
  (Ciao, o in value, True),
  (True, value == False, False),
  (92.5f, value = 92.0f, True),
 ]
 Il primo elemento della tupla può essere qualunque tipo o classe di python.
 Il secondo elemento è una espressione da applicare sulla tupla e che deve
 restituire True or False(value si riferisce al primo elemento della tupa)
 Il terzo elemento è il risultato dell'operazione appena sopra.

 A intervalli regolari ho bisogno di scorrere l'array sopra e aggiornare il
 valore del terzo elemento.
 Ho pensato di usare eval in questo modo:

 def check_status(value, eval_string):
   rc =  eval(eval_string)
   if rc is not bool: raise WrongEvalString()
   return rc

 Conosco i rischi di eval e vorrei evitare di usarlo però non riesco a
 trovare nulla di altrettanto semplice e con le stesse potenzialità.


eval è relativamente sicuro, dato che può eseguire solo espressioni, e non
statement completi come exec.
Lo puoi rendere ancora più sicuro limitando il namespace, ad esempio:

def expand_template(template, **kwargs):
from string import Template

return Template(template).substitute(**kwargs)

def eval_expression(expr_literal, value):
expr = expand_template(expr_literal, value=value)

return eval(expr, {}, {})


def check_status(value, eval_string):
  rc =  eval_expression(eval_string, value)
  if rc is not True:
  raise WrongEvalString()

check_status(10, $value == 10)

Questo però non basta, devi avere il controllo anche su value, ad esempio
accettando solo stringhe secondo un dato protocollo, di cui farai il
parsing e validazione.
Il mio protocollo preferito è Typed NetStrings:
  typeidlen:literal
Ad esempio per un intero:
  i3:777

tale protocollo è facile da leggere, parsare e validare (perchè verboso)

NB: In realtà la stringa che fa la validazione può essere impostata solo da
 qualcuno di autorizzato quindi il rischio che mi cancelli tutto il fs non
 ci dovrebbe essere, e non dovrebbero nemmeno fare operazioni del tipo
 value ** value però in ogni caso vorrei trovare qualcosa che mi metta al
 sicuro da questo tipo di operazioni.


Riguardo operazioni non autorizzate sei abbastanza al sicuro, grazie al
fatto che eval esegue solo espressioni, ed al fatto che valuti solo oggetti
a te noti.
In caso di dubbi, leggi la grammatica di Python per sapere cosa può
contenere una espressione.

Riguardo value ** value temi un attacco di tipo DoS?

In questo caso se vuoi limitare anche le possibili espressioni, l'unica
alternativa e scriverti un tuo parser, come ti hanno già suggerito.  Dai
una occhiata al modulo ast di Python.


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


Re: [Python] alternative ad eval

2014-03-18 Per discussione Balan Victor


 Riguardo value ** value temi un attacco di tipo DoS?

No no questo codice mi serve nella parte backend. Temo che un utente, per
semplice distrazione, faccia andare in crash l'applicazione.



 In questo caso se vuoi limitare anche le possibili espressioni, l'unica
 alternativa e scriverti un tuo parser, come ti hanno già suggerito.  Dai
 una occhiata al modulo ast di Python.

L'ho guardato  ma per me è ancora il buio completo ... ho bisogno di
farmi le basi ... in ogni caso sto provando con pyparsing adesso XD
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] alternative ad eval

2014-03-18 Per discussione Dario Bertini
2014-03-18 13:39 GMT+01:00 Manlio Perillo manlio.peri...@gmail.com:
 eval è relativamente sicuro, dato che può eseguire solo espressioni, e non
 statement completi come exec.
 Lo puoi rendere ancora più sicuro limitando il namespace, ad esempio:

purtroppo, non basta:
http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html
http://nedbatchelder.com/blog/201302/finding_python_3_builtins.html


 Questo però non basta, devi avere il controllo anche su value, ad esempio
 accettando solo stringhe secondo un dato protocollo, di cui farai il parsing
 e validazione.
 Il mio protocollo preferito è Typed NetStrings:
   typeidlen:literal
 Ad esempio per un intero:
   i3:777

 tale protocollo è facile da leggere, parsare e validare (perchè verboso)


sembra simile a un Type-Length-Value

http://en.wikipedia.org/wiki/Type-length-value


se possibile, preferite linguaggi regolari ad un TLV o altro formato
context-sensitive

http://www.youtube.com/watch?v=v8F8BqSa-XY
http://langsec.org


-- 
xmpp: berda...@gmail.com
bitmessage: BM-2cTYXfGiSTsnx3righ6aHcJSWe4MV17jDP
gpg fingerprint: 3F8D53518012716C4EEF7DF67B498306B3BF75A0 (used just
for signing commits)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] alternative ad eval

2014-03-18 Per discussione Balan Victor


 IMHO Sarebbe sempre bello avere un po' più di contesto in questi casi per
 capire qual è l'obbiettivo finale... Tipo in che contesto girerà il codice,
 chi/cosa fornirà input, quale sarà l'output ecc..
 Almeno, ovviamente, che non sia un quesito puramente accademico :)


Attualmente lo scopo è solo quello di valutare la fattibilità di un piccolo
software di monitoraggio. Su carta funziona tutto benissimo e ora sto
cercando di capire quali sono gli strumenti migliori per implementarlo: dal
database al framework da usare per l'application server, passando dalla
possibilità di creare soglie(anche dinamiche) e altre cose di questo tipo.
Eval veniva perfetto per dare la possibilità all'utente di creare le
proprie soglie.

I valori vengono aggiornati a intervalli più o meno regolari da alcuni
agenti che si occupano di recuperare i dati e di spedirli al repository
centrale. Una volta sul repository centrali i dati vengono valutati e in
base al stinga di valutazione e al risultato dell'operazione di eval si
possono innescare diversi scenari.



PS: Ho già pensato a strumenti tipo Nagios  C ma non fanno al caso mio.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] alternative ad eval

2014-03-18 Per discussione Manlio Perillo
2014-03-18 13:43 GMT+01:00 Balan Victor balan.vict...@gmail.com:


 Riguardo value ** value temi un attacco di tipo DoS?

 No no questo codice mi serve nella parte backend. Temo che un utente, per
 semplice distrazione, faccia andare in crash l'applicazione.


Attacco DoS inconsapevole :)

In questo caso la soluzione semplice è eseguire il codice in un processo
separato, limitando l'utilizzo della CPU (ci sono diversi metodi più o meno
semplici e/o efficaci, a seconda del sistema operativo).



 In questo caso se vuoi limitare anche le possibili espressioni, l'unica
 alternativa e scriverti un tuo parser, come ti hanno già suggerito.  Dai
 una occhiata al modulo ast di Python.

 L'ho guardato  ma per me è ancora il buio completo ... ho bisogno di
 farmi le basi ... in ogni caso sto provando con pyparsing adesso XD


Non è una cosa banalissima, io proverei prima con qualcosa di esistente
come ho scritto sopra. Tra l'altro se vuoi proteggerti da codice che può
caricare troppo la CPU devi forse prevedere diverse regole, e rischi di
perderci tempo.  Inoltre, nel codice che hai postato, dovresti proteggerti
dalle eccezioni, ad esempio la divisione per zero.


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


[Python] So che non e' proprio In Topic pero' ....

2014-03-18 Per discussione Carlos Catucci
Leggevo sulla lista Erlug, ad opera del baldo pythonista Davide Alberani
(che magari qualcuno di voi ha il piacere di conoscere) che 

L'evento è inserito all'interno dei warm up per l'hackmeeting 2014,
incontro delle controculture digitali che si terrà a bologna dal 27
al 29 giugno negli spazi di xm24: http://it.hackmeeting.org/

Chi fosse interessato e' avvisato.

Per gli altri, come si diceva un tempo in Fidonet: commenti, proposte e
insulti in matrix (aka privato).

Carlos
-- 
Coloro che sognano di giorno sono uomini pericolosi, perche' sono capaci di
recitare a occhi aperti il loro sogno fino a renderlo possibile. Ed e'
questo che feci anch'io. - (T.E. Lawrence)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] alternative ad eval

2014-03-18 Per discussione Manlio Perillo
2014-03-18 14:02 GMT+01:00 Dario Bertini berda...@gmail.com:

 2014-03-18 13:39 GMT+01:00 Manlio Perillo manlio.peri...@gmail.com:
  eval è relativamente sicuro, dato che può eseguire solo espressioni, e
 non
  statement completi come exec.
  Lo puoi rendere ancora più sicuro limitando il namespace, ad esempio:

 purtroppo, non basta:
 http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html
 http://nedbatchelder.com/blog/201302/finding_python_3_builtins.html


Grazie, avevo dimenticato di disabilitare i builtins, ma sembra che ancora
non basti.

Allora, sempre usando gli strumenti già disponibili in Python, consiglio
all'OP di guardare il codice della funzione ast.literal_eval.

Esegue un eval, ma restituisce l'AST del codice compilato, in modo da
validare il codice da eseguire.   Risparmi un bel pò di tempo rispetto a
pyparsing, perchè usi la grammatica di Python.  Lo svantaggio è che
probabilmente devi gestire più casi.


 
  Questo però non basta, devi avere il controllo anche su value, ad esempio
  accettando solo stringhe secondo un dato protocollo, di cui farai il
 parsing
  e validazione.
  Il mio protocollo preferito è Typed NetStrings:
typeidlen:literal
  Ad esempio per un intero:
i3:777
 
  tale protocollo è facile da leggere, parsare e validare (perchè verboso)
 

 sembra simile a un Type-Length-Value

 http://en.wikipedia.org/wiki/Type-length-value


Direi che è quello.


 se possibile, preferite linguaggi regolari ad un TLV o altro formato
 context-sensitive

 http://www.youtube.com/watch?v=v8F8BqSa-XY
 http://langsec.org


TLV non mi sembra abbia i problemi riportati in quei paper, ma non ho
approfondito.


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


[Python] or

2014-03-18 Per discussione Filippo Dal Bosco -
dalla lista row devo togliere alcune word in posizione variabile per
costruire un' alta lista 

Per come funziona  or  in python questo sotto non va
 
stamp=[]
for word in row:
 if (word !=  ' ' , or  word != 'pippo'  or  word != 'pluto'): 
   stamp.append(word)
 print(stamp)

qual' è la migliore soluzione?

grazie

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


Re: [Python] or

2014-03-18 Per discussione Manlio Perillo
2014-03-18 16:46 GMT+01:00 Filippo Dal Bosco - 
filippo.dalbo...@whiteready.com:

 dalla lista row devo togliere alcune word in posizione variabile per
 costruire un' alta lista

 Per come funziona  or  in python questo sotto non va

 stamp=[]
 for word in row:
  if (word !=  ' ' , or  word != 'pippo'  or  word != 'pluto'):
stamp.append(word)
  print(stamp)

 qual' è la migliore soluzione?


exclude = {'', 'pippo', 'pluto'}

# soluzione veloce:
print set(row) - exclude

# oppure:
for word in row:
if word not in exclude:
stamp.append(word)


Questo se ho capito correttamente quello che vuoi fare


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


Re: [Python] or

2014-03-18 Per discussione Marco Beri
2014-03-18 16:46 GMT+01:00 Filippo Dal Bosco - 
filippo.dalbo...@whiteready.com:

 dalla lista row devo togliere alcune word in posizione variabile per
 costruire un' alta lista

 Per come funziona  or  in python questo sotto non va


Or in python funziona come in tutto il resto del mondo.

E come dovrebbe funzionare secondo te?

stamp=[]
 for word in row:
  if (word !=  ' ' , or  word != 'pippo'  or  word != 'pluto'):
stamp.append(word)
  print(stamp)

 qual' è la migliore soluzione?


Togliere la virgola dopo ' '

Comunque il modo migliore è, a mio parere, usando la list comprehension:

stamp = [word for word in row if word not in (' ', 'pippo', 'pluto')]

Ciao.
Marco.

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


Re: [Python] or

2014-03-18 Per discussione Filippo Dal Bosco -
Il giorno Tue, 18 Mar 2014 16:53:42 +0100
Marco Beri marcob...@gmail.com ha scritto:

 2014-03-18 16:46 GMT+01:00 Filippo Dal Bosco - 
 filippo.dalbo...@whiteready.com:

 Or in python funziona come in tutto il resto del mondo.
 
 E come dovrebbe funzionare secondo te?

or  ( in logica  v dal vel latino)  dovrebbe significare  per una
lista di oggetti : uno o più fino anche a tutti .

Nel caso specifico : se word NON è   ' ', 'pippo' , 'pluto' appendi il
suo contenuto a stamp

Anche togliendo in python la ,  non ottengo una lista che non contiene
' ', 'pippo' , 'pluto'

io non sono un programmatore ma mi sembra di ricordare che in Dbase e
clipper ( vecchio dos) una serie di or otteneva  questo effetto.




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


Re: [Python] or

2014-03-18 Per discussione Massimiliano Modena
Il giorno 18 marzo 2014 17:25, Filippo Dal Bosco - 
filippo.dalbo...@whiteready.com ha scritto:

 Il giorno Tue, 18 Mar 2014 16:53:42 +0100
 Marco Beri marcob...@gmail.com ha scritto:

  2014-03-18 16:46 GMT+01:00 Filippo Dal Bosco - 
  filippo.dalbo...@whiteready.com:

  Or in python funziona come in tutto il resto del mondo.
 
  E come dovrebbe funzionare secondo te?

 or  ( in logica  v dal vel latino)  dovrebbe significare  per una
 lista di oggetti : uno o più fino anche a tutti .

 Nel caso specifico : se word NON è   ' ', 'pippo' , 'pluto' appendi il
 suo contenuto a stamp

 Anche togliendo in python la ,  non ottengo una lista che non contiene
 ' ', 'pippo' , 'pluto'

 io non sono un programmatore ma mi sembra di ricordare che in Dbase e
 clipper ( vecchio dos) una serie di or otteneva  questo effetto.




 --
 Filippo
 ___

 Non sono un programmatore python ma, se leggi bene quell'if è:
se la parola non è pippo o non è pluto , la condizione è sempre vera.
Perché una delle due è sempre vera.
La più comoda sono le list comprension come diceva Marco.
Altrimenti se usi l'or devi cercare l'uguaglianza, altrimenti usa
l'operatore and con la diseguaglianza.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] or

2014-03-18 Per discussione Marco Beri
2014-03-18 17:25 GMT+01:00 Filippo Dal Bosco - 
filippo.dalbo...@whiteready.com:

 or  ( in logica  v dal vel latino)  dovrebbe significare  per una
 lista di oggetti : uno o più fino anche a tutti .

 Nel caso specifico : se word NON è   ' ', 'pippo' , 'pluto' appendi il
 suo contenuto a stamp

 Anche togliendo in python la ,  non ottengo una lista che non contiene
 ' ', 'pippo' , 'pluto'


La virgola andava tolta perché era un errore, non per far funzionare il
resto.


 io non sono un programmatore ma mi sembra di ricordare che in Dbase e
 clipper ( vecchio dos) una serie di or otteneva  questo effetto.


Sbagli: ho programmato molti anni in Clipper e ti posso garantire che l'OR
funzionava come in Python :-)

Ciao.
Marco.

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


Re: [Python] or

2014-03-18 Per discussione Lorenzo Sutton

On 18/03/2014 17:25, Filippo Dal Bosco - wrote:

Il giorno Tue, 18 Mar 2014 16:53:42 +0100
Marco Beri marcob...@gmail.com ha scritto:


2014-03-18 16:46 GMT+01:00 Filippo Dal Bosco - 
filippo.dalbo...@whiteready.com:

[...]
 una lista che non contiene

' ', 'pippo' , 'pluto'


Allora vuoi che tutte e tre le condizioni siano soddisfatte allo stesso 
tempo: quindi un and.. per esempio


 l = [' ', 'pippo', 'pluto', 'peppa pig', 'mario', 'foo', 'homer']
 new_list = []
 for word in l:
if word != ' ' and word != 'pippo' and word != 'pluto':
print word, oh yes!
new_list.append(word)
else:
print word, 'bye bye..'


  bye bye..
pippo bye bye..
pluto bye bye..
peppa pig oh yes!
mario oh yes!
foo oh yes!
homer oh yes!
 new_list
['peppa pig', 'mario', 'foo', 'homer']

Qualche altro esempio...
 word == 'pippo'
 word == ' ' or word == 'pippo' or word == 'pluto'
True
 word != ' ' or word != 'pippo' or word != 'pluto'
True
 word2 = 'mario'
 word2 == ' ' or word == 'pippo' or word == 'pluto'
True
 word2 == ' ' or word2 == 'pippo' or word2 == 'pluto'
False
 word2 != ' ' or word2 != 'pippo' or word2 != 'pluto'
True
 word2 != ' ' and word2 != 'pippo' and word2 != 'pluto'
True
 not word == ' ' or not word == 'pippo' or not word == 'pluto'
True
 not word2 == ' ' or not word2 == 'pippo' or not word2 == 'pluto'
True

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


Re: [Python] or

2014-03-18 Per discussione Marco Gagliano
+1
On 14-03-18 11:53 AM, Marco Beri wrote:
 stamp = [word for word in row if word not in (' ', 'pippo', 'pluto')]

-- 
Marco Gagliano

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


Re: [Python] or

2014-03-18 Per discussione Diego Barrera

Il 18/03/2014 16:46, Filippo Dal Bosco - ha scritto:

dalla lista row devo togliere alcune word in posizione variabile per
costruire un' alta lista

Per come funziona  or  in python questo sotto non va
  
stamp=[]

for word in row:
  if (word !=  ' ' , or  word != 'pippo'  or  word != 'pluto'):
stamp.append(word)
  print(stamp)

qual' è la migliore soluzione?

grazie


parole_escluse = [pippo, pluto, paperino]
filtro = lambda x: x not in parole_escuse

row = filter(filtro, row)

Rigorosamente non testato! :)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] alternative ad eval

2014-03-18 Per discussione enrico franchi
2014-03-18 13:05 GMT+00:00 Balan Victor balan.vict...@gmail.com:

 Attualmente lo scopo è solo quello di valutare la fattibilità di un
 piccolo software di monitoraggio.


C'e' tanta roba forte e facile gia' pronta. Non vi consiglio di farvi in
casa queste cose.
Due o tre cose sul monitoraggio le ho imparate, via... ;)


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