ok. L'esempio di daniele e quello corretto..Buona serata! Il 28 luglio 2012 21:42, Alberto Granzotto <agran...@gmail.com> ha scritto: > > > 2012/7/28 Daniele Varrazzo <p...@develer.com> >> >> On 2012-07-28 19:49, Giorgio Zoppi wrote: >>> >>> Marco compariamo >>> >>> RegExp: >>> import re >>> >>> date = "01/02/1988" >>> checkdate ="^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- >>> /.](19|20)\d\d" >>> obj = re.compile(checkdate) >>> if (re.match(date)): >>> print 'Valid date' >> >> >> Ti dice anche se un anno è bisestile? >> >> >>> Datetime >>> from datetime import datetime >>> date = '10/12/1977' >>> input = date.replace("/","") >>> result = None >>> format = ['%d%m%Y'] >>> try: >>> result = datetime.strptime(input, format) >>> except: >>> pass >>> >>> if (result): >>> print "Validate" >>> >>> >>> Il secondo e' piu pythonico...ma lungo. Hai altre opzioni? >> >> >> Basta toglierci tutta la roba che non serve. Che poi che vuol dire, più un >> pezzo di codice è corto e meglio è? L'estetica del perl? >> >> from datetime import datetime >> input = '10/12/1977' >> try: >> result = datetime.strptime(input, '%d/%m/%Y') >> except ValueError: >> result = None >> >> (sebbene l'aggettivo "Pythonico" non sia esattamente ben definito, il tuo >> esempio *veramente* non lo era..) > > > totalmente d'accordo, e non sono nemmeno sostituibili. Semplicemente quella > con le RegExp è sbagliata, l'altra no, perché? > > import re > re.match( > "^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d", > "31/02/1988") # nota bene, il 31 febbraio probabilmente non esiste > > In questo caso con la regexp puoi magari avvicinarti alla correttezza, puoi > farle estremamente sofisticate e riconoscere i mesi da 30/31/28 giorni e > arrivare a considerare gli anni bisestili ottenendo qualcosa tipo: > > > ^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$ > [via <http://regexadvice.com/blogs/mash/archive/2004/04/02/300.aspx>] > > ma si tratterebbe probabilmente di masturbazione più che programmazione :P > > [scusate ho letto ora "ti dice anche se l'anno è bisestile, ma ormai avevo > scritto! :P] > > >> >> -- >> Daniele Varrazzo - Develer S.r.l. >> http://www.develer.com >> >> _______________________________________________ >> 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 >
-- Quiero ser el rayo de sol que cada día te despierta para hacerte respirar y vivir en me. "Favola -Moda". _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python