¿Cómo comprobar si un carácter está en mayúsculas en Python?

Tengo una cuerda como esta

>>> x="Alpha_beta_Gamma" >>> words = [y for y in x.split('_')] >>> words ['Alpha', 'beta', 'Gamma'] 

Quiero una salida que diga que X no es conforme, ya que el segundo elemento de la lista de palabras comienza con minúsculas y si la cadena x = "Alpha_Beta_Gamma" debe imprimir que la cadena es conforme

Tal vez quieras str.istitle

 >>> help(str.istitle) Help on method_descriptor: istitle(...) S.istitle() -> bool Return True if S is a titlecased string and there is at least one character in S, ie uppercase characters may only follow uncased characters and lowercase characters only cased ones. Return False otherwise. >>> "Alpha_beta_Gamma".istitle() False >>> "Alpha_Beta_Gamma".istitle() True >>> "Alpha_Beta_GAmma".istitle() False 

Para probar que todas las palabras comienzan con mayúsculas, use esto:

 print all(word[0].isupper() for word in words) 
 x="Alpha_beta_Gamma" is_uppercase_letter = True in map(lambda l: l.isupper(), x) print is_uppercase_letter >>>>True 

Así que puedes escribirlo en 1 hilo.

 words = x.split("_") for word in words: if word[0] == word[0].upper() and word[1:] == word[1:].lower(): print word, "is conformant" else: print word, "is non conformant" 

Puedes usar este código:

 def is_valid(string): words = string.split('_') for word in words: if not word.istitle(): return False, word return True, words x="Alpha_beta_Gamma" assert is_valid(x)==(False,'beta') x="Alpha_Beta_Gamma" assert is_valid(x)==(True,['Alpha', 'Beta', 'Gamma']) 

De esta manera usted sabe si es válido y qué palabra es incorrecta.

Puedes usar esta expresión regular:

 ^[AZ][az]*(?:_[AZ][az]*)*$ 

Código de muestra:

 import re strings = ["Alpha_beta_Gamma", "Alpha_Beta_Gamma"] pattern = r'^[AZ][az]*(?:_[AZ][az]*)*$' for s in strings: if re.match(pattern, s): print s + " conforms" else: print s + " doesn't conform" 

Como se ve en el teclado

Use list (str) para dividir en caracteres, luego importe la cadena y use string.ascii_uppercase para comparar.

Compruebe el módulo de cadena: http://docs.python.org/library/string.html