<br><br><div class="gmail_quote">2012/7/28 Daniele Varrazzo <span dir="ltr"><<a href="mailto:piro@develer.com" target="_blank">piro@develer.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">On 2012-07-28 19:49, Giorgio Zoppi wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Marco compariamo<br>
<br>
RegExp:<br>
import re<br>
<br>
date = "01/02/1988"<br>
checkdate ="^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d"<br>
obj = re.compile(checkdate)<br>
if (re.match(date)):<br>
     print 'Valid date'<br>
</blockquote>
<br></div>
Ti dice anche se un anno è bisestile?<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Datetime<br>
from datetime import datetime<br>
date = '10/12/1977'<br>
input = date.replace("/","")<br>
result = None<br>
format = ['%d%m%Y']<br>
  try:<br>
    result = datetime.strptime(input, format)<br>
  except:<br>
     pass<br>
<br>
if (result):<br>
    print "Validate"<br>
<br>
<br>
Il secondo e' piu pythonico...ma lungo. Hai altre opzioni?<br>
</blockquote>
<br></div>
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?<br>
<br>
from datetime import datetime<br>
input = '10/12/1977'<br>
try:<br>
    result = datetime.strptime(input, '%d/%m/%Y')<br>
except ValueError:<br>
    result = None<br>
<br>
(sebbene l'aggettivo "Pythonico" non sia esattamente ben definito, il tuo esempio *veramente* non lo era..)</blockquote><div><br></div><div>totalmente d'accordo, e non sono nemmeno sostituibili. Semplicemente quella con le RegExp è sbagliata, l'altra no, perché?</div>

<div><br></div><div><font color="#222222" face="arial, sans-serif">import re</font></div><div>re.match(</div><div>    "^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d",</div><div>    "31/02/1988") # nota bene, il 31 febbraio probabilmente non esiste</div>

<div> </div><div>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:</div>

<br> ^(?:(?:(?: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})$</div>

<div class="gmail_quote">[via <<a href="http://regexadvice.com/blogs/mash/archive/2004/04/02/300.aspx">http://regexadvice.com/blogs/mash/archive/2004/04/02/300.aspx</a>>]</div><div class="gmail_quote"><br></div><div class="gmail_quote">

ma si tratterebbe probabilmente di masturbazione più che programmazione :P</div><div class="gmail_quote"><br></div><div class="gmail_quote">[scusate ho letto ora "ti dice anche se l'anno è bisestile, ma ormai avevo scritto! :P]<br>

<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="HOEnZb"><font color="#888888"><br>
-- <br>
Daniele Varrazzo - Develer S.r.l.<br>
<a href="http://www.develer.com" target="_blank">http://www.develer.com</a></font></span><div class="HOEnZb"><div class="h5"><br>
______________________________<u></u>_________________<br>
Python mailing list<br>
<a href="mailto:Python@lists.python.it" target="_blank">Python@lists.python.it</a><br>
<a href="http://lists.python.it/mailman/listinfo/python" target="_blank">http://lists.python.it/<u></u>mailman/listinfo/python</a><br>
</div></div></blockquote></div><br>