Comment convertir une chaîne en majuscules en Python?
Exemple:
HILO -> Hilo
new york -> New York
SAN FRANCISCO -> San Francisco
Est-il une bibliothèque ou d'un moyen standard pour effectuer cette tâche?
- Ce n'est pas "CamelCase", c'est "Capitaliser"; qui voulez-vous?
- camelCase isLike cette.
- Vos exemples d'utilisation PascalCase.
Vous devez vous connecter pour publier un commentaire.
Pourquoi ne pas utiliser
titre
Droit de la docs:Si tu voulais vraiment CamelCase vous pouvez utiliser ceci:
title
: "L'algorithme utilise un langage simple, indépendant de la définition d'un mot que les groupes de lettres consécutives. La définition des œuvres dans de nombreux contextes, mais cela signifie que les apostrophes dans les contractions et les possessifs forme les limites des mots, qui ne peut être le résultat souhaité". Une solution possible serait d'utiliser Laurence réponse avec la regexr"['\w]+"
donc apostrophes ne serait pas la fin d'un match (signes de ponctuation supplémentaires pourraient être ajoutés selon les besoins).'make IT camel CaSe'.title().replace(' ', '')
.def toCamel(s): ret = ''.join(x for x in s.title() if not x.isspace()) return ret[0].lower() + ret[1:]
Utilisation:toCamel("WRITE this in camelcase") 'writeThisInCamelcase'
title()
. De profondeur.Que l'on commence toujours par une minuscule, et aussi bande de caractères non alphanumériques:
re.sub
peut prendre une fonction pour le "remplacement" (plutôt que de simplement une chaîne de caractères, qui est l'utilisation de la plupart des gens semblent être familier avec). Cette repl fonction sera appelée avec unre.Match
objet pour chaque match de la répétition, et le résultat (ce qui devrait être une chaîne de caractères) sera utilisé comme un remplaçant pour ce match.Une version plus longue de la même chose:
Cette pré-compile le modèle (généralement considéré comme une bonne forme) et utilise une fonction nommée au lieu d'un lambda.
match
sera passé à la fonction? et depuismatches
dans les expressions régulières sont des groupes. c'est pourquoi cette ligne existelambda m:m.group(0).capitalize()
?re.sub
est donné un callable (par exemple: une fonction) comme le "remplacement", il passe le match de l'objet à celle exigible, et s'attend à récupérer une chaîne de caractères qui est ce qu'il utilise en fait le remplacement. Si vous trouvez des lambdas de la confusion, de la "version longue" fait exactement la même chose en plus verbeux.Pourquoi ne pas en écrire un? Quelque chose comme cela peut répondre à vos exigences:
Remarque: Pourquoi suis-je une réponse? Cette réponse est basée sur le titre de la question et la notion que camelcase est défini comme: une série de mots qui ont été concaténées (sans espace!) à ce que chacune des paroles originales de commencer avec une lettre majuscule (le reste étant minuscules, à l'exception de la première parole de la série (qui est entièrement en minuscules). Il est également supposé que "toutes les chaînes" fait référence à jeu de caractères ASCII; unicode ne fonctionnerait pas avec cette solution).
simple
Compte tenu de la définition ci-dessus, cette fonction
lorsqu'on l'appelle, serait la conséquence de cette manière
moins simple
Noter qu'il échoue lorsqu'il est présenté avec une déjà camelcase chaîne!
encore moins simple
Noter qu'il échoue avec de nombreuses chaînes unicode
Je n'ai pas de solution pour ces cas(ou d'autres, qui pourrait être introduite avec un peu de créativité). Donc, comme dans toutes les choses qui ont à voir avec des cordes, couvrir votre propre cas et bonne chance avec unicode!
Potentiels de la bibliothèque: https://pypi.org/project/stringcase/
Exemple:
S'il est permis de se demander si elle va laisser des espaces. (Exemples montrent la suppression de l'espace, mais il y a un bug tracker question en notant qu'il laisse dans l'.)
Je voudrais ajouter ma petite contribution à ce post:
juste utilisation .titre(), et il vous permet de convertir première lettre de chaque mot dans la capitale, reste dans les petits: