[Python-es] Contar mayúsculas en un archivo

Asdrúbal Iván Suárez Rivera asdrubal.ivan.suarez.rivera en gmail.com
Mie Abr 18 17:46:51 CEST 2012


El 18 de abril de 2012 11:08, Rock Neurotiko
<miguelglafuente en gmail.com>escribió:

> ¿Has pensado en algo mas sencillo?
>
> Por ejemplo, sabemos que las mayusculas tienen un rango en el codigo
> ascii, por lo tanto, solo tienes que recorrer el string con un for, y hacer:
>
> if (ord(string[i]) >= 65 and ord(string[i])<=90) or ord(string[i])==209:
>


De acuerdo contigo... Una manera, en mi opinión elegante sería crear una
función simple que sea algo así como

def es_mayuscula(caracter):
    return (ord(caracter>=65) and ord(caracter)<=90)) or ord(caracter)==209

y la llamas desde el programa principal mediante un for.


>
>
> string es la cadena, i es el numero que va recorriendola, y ord es una
> funcion para pasar de caracter a numero ascii.
>
> Compruebas que esté entre 65 y 90 (mayusculas) o que sea el 209, si
> quieres contar tambien con la 'Ñ' :)
>
> El 18 de abril de 2012 17:33, alito s <alito81 en gmail.com> escribió:
>
>> Hola a tod en s:
>> Hoy vengo con un problema (seguramente para ustedes no es nada :D). Estoy
>> haciendo un contador de mayúsculas. El archivo tiene mayúsculas y
>> minúsculas. Al final quiero que me diga cuantas mayúsculas hay y cuáles son
>> las más abundantes. Esto último ya lo conseguí. Mi problema real, radica en
>> que la búsqueda de las mayúsculas solo me lo hace en la primera sección del
>> archivo. Es decir, tengo algo como lo siguiente:
>>
>>
>> mrlplllvfasvipgavllldtRQFLIYNEDHKRCVDAVSPSAVQTAACNQDAESQKFRWVSesqimsvafklcLGVPSKTDwvaitlyacDSKSEFQKWECKNDTaa
>>
>> Bueno mi script solo me busca: RQFLIYNEDHKRCVDAVSPSAVQTAACNQDAESQKFRWVS y
>> ya no busca LGVPSKTD ni DSKSEFQKWECKNDT.
>>
>> El script es el siguiente:
>>
>> for line in myfile:
>>      findWords1 = re.compile(r"\n[A-Z]+", re.MULTILINE)
>> for match in findWords1.finditer(myfile):
>>      words = match.group() sequence = (collections.Counter(words))
>>      for x, count in sequence.most_common(10000):
>>           print "No. total:" + '%s: %1d' % (x, count)
>>
>> Un punto importante es que la búsqueda la realiza siempre y cuando
>> encuentre un salto de línea antes.
>> Saludos.
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> http://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
>
> --
> Miguel García Lafuente - Rock Neurotiko
> Vocal de la Junta Directiva Nacional del Partido Pirata.
> Coordinador de Jóvenes Piratas en Madrid.
>
> "Libertad en lugar de miedo." - "Información libre, sociedad libre."
>
> El contenido de este e-mail es privado, no se permite la revelacion del
> contenido de este e-mail a gente ajena a él.
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>


-- 
Asdrúbal Iván Suárez Rivera

*El éxito de alguien que enseña no es que sepa mucho, sino que lo poco que
sabe lo sepa hacer llegar.*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20120418/a3414f6d/attachment.html>


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