Mais
Como capitalizar a primeira letra de cada palavra em um fio?
s = 'the brown fox'
...fazer algo aqui...
deve ser :
'The Brown Fox'
Qual'é a maneira mais fácil de fazer isto?
526
3
O método
.title()
de uma string (ou ASCII ou Unicode é bom) faz isso:No entanto, cuidado com as cordas com apóstrofos embutidos, como observado nos documentos.
Só porque este tipo de coisas é divertido para mim, aqui estão mais duas soluções.
Dividam-se em palavras, separem cada palavra dos grupos divididos e juntem-se novamente. Isto vai mudar o espaço branco que separa as palavras em um único espaço branco, não importa o que fosse.
EDIT: Eu não'não me lembro o que eu estava pensando quando escrevi o código acima, mas não há necessidade de construir uma lista explícita; podemos usar uma expressão geradora para fazer isso de forma preguiçosa. Portanto, aqui está uma solução melhor:
Use uma expressão regular para combinar com o início da string, ou espaço em branco separando palavras, mais um único caractere não espacial; use parênteses para marcar " combine grupos". Escreva uma função que pegue um objeto de correspondência e retorne o grupo de correspondência de espaço em branco inalterado e o grupo de correspondência de caracteres sem espaço em branco em maiúsculas. Depois utilize
re.sub()
para substituir os padrões. Este não tem os problemas de pontuação da primeira solução, nem refaz o espaço em branco como a minha primeira solução. Esta produz o melhor resultado.I' estou contente por ter pesquisado esta resposta. Eu não tinha idéia de que
re.sub()
poderia ter uma função! Você pode fazer processamento não trivial dentro dere.sub()
para produzir o resultado final!Se str.title() não't funcionar para você, faça a capitalização você mesmo.
Um-liner:
Exemplo claro: