69 votes

Comment vérifier si un caractère est en majuscule en Python ?

J'ai une chaîne de caractères comme ceci

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

Je veux une sortie disant que X n'est pas conforme car le deuxième élément de la liste mots commence par une minuscule et si la chaîne x = "Alpha_Beta_Gamma" alors elle devrait afficher que la chaîne est conforme

78voto

Cristian Ciupitu Points 5692

Pour tester que tous les mots commencent par une majuscule, utilisez ceci :

imprimer tous (mot [0] .isupper () pour mot dans les mots)

60voto

Jochen Ritzel Points 42916

Peut-être vous voulez str.istitle

>>> help(str.istitle)
Aide sur la méthode_descriptor:

istitle(...)
    S.istitle() -> bool

    Renvoie True si S est une chaîne en majuscules initiales et qu'il y a au moins un
    caractère dans S, c'est-à-dire que les majuscules ne peuvent suivre que des caractères non accentués
    et que les minuscules ne peuvent suivre que des caractères accentués. Renvoie False
    sinon.

>>> "Alpha_beta_Gamma".istitle()
False
>>> "Alpha_Beta_Gamma".istitle()
True
>>> "Alpha_Beta_GAmma".istitle()
False

2voto

inspectorG4dget Points 25092
words = x.split("_")
for word in words:
    if word[0] == word[0].upper() and word[1:] == word[1:].lower():
        print word, "est conforme"
    else:
        print word, "n'est pas conforme"

2voto

Vous pouvez utiliser ce code :

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 cette façon, vous savez si c'est valide et quel mot est incorrect

1voto

NullUserException Points 42268

Vous pouvez utiliser cette regex :

^[A-Z][a-z]*(?:_[A-Z][a-z]*)*$

Code d'exemple :

import re

strings = ["Alpha_beta_Gamma", "Alpha_Beta_Gamma"]
pattern = r'^[A-Z][a-z]*(?:_[A-Z][a-z]*)*$'

for s in strings:
    if re.match(pattern, s):
        print s + " est conforme"
    else:
        print s + " ne correspond pas"

Comme vu sur codepad

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X