[Python-es] Comparación de cadenas no sensible a acentos

Luis Miguel Morillas morillas en gmail.com
Vie Dic 10 07:26:27 CET 2010


El día 10 de diciembre de 2010 02:01, Chema Cortes <py en ch3m4.org> escribió:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> El 10/12/10 00:07, Luis Miguel Morillas escribió:
>> Cómo hacemos esto en python? Quiero que se compare como similar
>> 'tecnica' y 'técnica' por ejemplo.
>
> Apunta la receta:
>
> import unicodedata
>
> def textplain(s):
>
>  def normalize(c):
>    return unicodedata.normalize("NFD",c)[0]
>
>    return ''.join(normalize(c) for c in s)
>
>
>
> Si van a ser cadenas muy largas o buscas "eficiencia" por encima de
> todo, y si además quieres que tampoco sea sensible mayúsculas y
> minúsculas, entonces se podría hacer algo así:
>
> import unicodedata
>
> def eq_plain(s1,s2):
>
>  def normalize(c):
>    return unicodedata.normalize("NFD",c)[0].upper()
>
>  return all( (normalize(c1)==normalize(c2)) for (c1,c2) in zip(s1,s2))
>
>
>
> NOTA: sólo funciona si los argumentos están en unicode

Gracias, la verdad es que me sonaba esto del normalize pero estaba bloqueado :-P

-- lm


> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
> iQEcBAEBAgAGBQJNAXvoAAoJEFdWyBWwhL4FxywH/0U2FrXsGWxlwVrkTxeJO+xv
> qCkuxrWQzo44IX7qKbiU+Tfkz9sfQLgIudRH5WQ2R53SRZOcp3hsyi1Qw/k5WC0/
> 6+vwPjL8Wp9sJQ3Aeq0l1HNGe1wYDoUrz822bxXNr6LM1FmmVKwS83VQ8IKW7xYB
> dGGvoo9w5sZv8UPGvEG/HxUnGjVsNQIZtlRjaU9KHLesr7h70de4vMUzhhz3sIYg
> Lx0DxjpNv33YDzpi4mQ/DKkH/dJoZuu4w0pN/QnZNuurJgrZ2i7OXy7MsluZXqPK
> gVDcNak1KRtFJjFJesR0LY6+wI4UXgyF/1pCs5VMun+f2Tk7bRbk7LfrU5g/lBc=
> =brSa
> -----END PGP SIGNATURE-----
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>


Más información sobre la lista de distribución Python-es