Je sais que .capitalize () met en majuscule la première lettre d'une chaîne, mais que faire si le premier caractère est un entier?
ce
1bob
5sandy
pour ça
1Bob
5Sandy
python
capitalize
letter
user1442957
la source
la source
next((i for i,e in enumerate(test) if not e.isdigit()), '0')
résout pour la casse de la chaîne vide. capitalize
transformera également d'autres caractères en caractères inférieurs. Extrait de la documentation officielle: "Renvoie une version titrée de S, c'est-à-dire que les mots commencent par les caractères de la casse du titre, tous les caractères restants sont en minuscules. "Seulement parce que personne d'autre ne l'a mentionné:
Cependant, cela donnerait également
c'est-à-dire qu'il ne met pas seulement en majuscule le premier caractère alphabétique. Mais alors
.capitalize()
a le même problème, au moins en cela'joe Bob'.capitalize() == 'Joe bob'
, alors meh.la source
Ceci est similaire à la réponse de @ Anon en ce sens qu'il garde le reste de la casse de la chaîne intacte, sans avoir besoin du module re.
Comme @Xan l'a souligné, la fonction pourrait utiliser plus de vérification des erreurs (comme vérifier que x est une séquence - mais j'omets les cas de bord pour illustrer la technique)
Mis à jour par commentaire @normanius (merci!)
Merci à @GeoStoneMarten d'avoir fait remarquer que je n'ai pas répondu à la question! -fixé ça
la source
len(x) == 0
branche.return x[0].upper() + x[1:] if len(x) > 0 else x
capitalize
& d'title
abord minuscule la chaîne entière, puis majuscule seulement la première lettre.a[:1].upper() + a[1:]
, cela prendra soin de lalen(X)==0
valise d'angle.Voici une ligne unique qui mettra en majuscule la première lettre et laissera la casse de toutes les lettres suivantes:
Cela entraînera
WordsWithOtherUppercaseLetters
la source
Comme vu ici répondu par Chen Houwu, il est possible d'utiliser le package string:
la source
Je suis venu avec ceci:
la source
Vous pouvez remplacer la première lettre (
preceded by a digit
) de chaque mot en utilisant regex:la source
un monoplace:
' '.join(sub[:1].upper() + sub[1:] for sub in text.split(' '))
la source