texto - separar palabra en letras python
Cuenta las letras mayúsculas en una cadena con Python (6)
Estoy tratando de averiguar cómo puedo contar las letras mayúsculas en una cadena.
Solo he podido contar letras minúsculas:
def n_lower_chars(string):
return sum(map(str.islower, string))
Ejemplo de lo que estoy tratando de lograr:
Type word: HeLLo
Capital Letters: 3
Cuando trato de voltear la función de arriba, produce errores:
def n_upper_chars(string):
return sum(map(str.isupper, string))
El método (ligeramente) más rápido para esto en realidad parece ser la prueba de membresía en un frozenset
import string
message=''FoObarFOOBARfoobarfooBArfoobAR''
s_upper=frozenset(string.uppercase)
%timeit sum(1 for c in message if c.isupper())
>>> 100000 loops, best of 3: 5.75 us per loop
%timeit sum(1 for c in message if c in s_upper)
>>> 100000 loops, best of 3: 4.42 us per loop
Esto funciona
s = raw_input().strip()
count = 1
for i in s:
if i.isupper():
count = count + 1
print count
Puedes hacer esto con sum
, una expresión generadora y str.isupper
:
message = input("Type word: ")
print("Capital Letters: ", sum(1 for c in message if c.isupper()))
Vea una demostración a continuación:
>>> message = input("Type word: ")
Type word: aBcDeFg
>>> print("Capital Letters: ", sum(1 for c in message if c.isupper()))
Capital Letters: 3
>>>
Puedes usar re
:
import re
string = "Not mAnY Capital Letters"
len(re.findall(r''[A-Z]'',string))
5
Usando len
y filter
:
import string
value = "HeLLo Capital Letters"
len(filter(lambda x: x in string.uppercase, value))
>>> 5
from string import ascii_uppercase
count = len([letter for letter in instring if letter in ascii_uppercase])
Esta no es la forma más rápida, pero me gusta lo legible que es. Otra forma, sin importar desde una cadena y con una sintaxis similar, sería:
count = len([letter for letter in instring if letter.isupper()])