Existe uma maneira padrão em Python para titlecase uma string (ou seja, palavras começar com caracteres maiúsculos, todos os caracteres restantes encaixotado têm minúsculas) mas os artigos que deixam como and
, in
eof
em minúsculas?
python
string
title-case
Yassin
fonte
fonte
re
necessário? Existe uma"".split
função que faz o mesmo.str.split
não considera espaços contíguos.re.split
retém espaços. Portanto, esta função não ocupa nenhum espaço."".split()
não os considerasse, mas"".split(" ")
sim.title_except('a whim of aN elephant', articles)
caso. Você pode usar aword.lower() in exceptions
condição de filtragem para corrigi-lo.2001 a Space Odyssey
deve retornar2001 A Space Odyssey
, onde aa
é maiúscula conforme segue um número. Desde já, obrigado.Use o módulo titlecase.py ! Funciona apenas para inglês.
GitHub: https://github.com/ppannuto/python-titlecase
fonte
Existem estes métodos:
Não há opção de artigo em minúsculas. Você mesmo teria que codificar isso, provavelmente usando uma lista de artigos que deseja reduzir.
fonte
Stuart Colville fez um port Python de um script Perl escrito por John Gruber para converter strings em maiúsculas, mas evita capitalizar palavras pequenas com base nas regras do Manual de estilo do New York Times, bem como atender a vários casos especiais.
Algumas das habilidades desses scripts:
eles capitalizam palavras pequenas como if, in, of, on , etc., mas irão retirá-las se estiverem erroneamente capitalizados na entrada.
os scripts pressupõem que as palavras com letras maiúsculas diferentes do primeiro caractere já estão corretamente capitalizadas. Isso significa que eles deixarão uma palavra como “iTunes” sozinha, em vez de transformá-la em “iTunes” ou, pior, “iTunes”.
eles pulam quaisquer palavras com pontos de linha; “Example.com” e “del.icio.us” permanecerão em letras minúsculas.
eles têm hacks codificados especificamente para lidar com casos ímpares, como “AT&T” e “Q&A”, ambos contendo palavras pequenas (at e a) que normalmente deveriam ser minúsculas.
A primeira e a última palavra do título são sempre maiúsculas, portanto, entradas como “Nada a ter medo” serão transformadas em “Nada a ter medo de”.
Uma pequena palavra após os dois pontos será maiúscula.
Você pode baixá-lo aqui .
fonte
Isso deve servir. Eu entendo de forma diferente.
Ok, como disse na resposta acima, você deve fazer uma capitalização personalizada:
meutexto = eu sou um foobar bazbar '
Isso produz
fonte
O método title do Python 2.7 tem uma falha.
retornará Carpenter ' S Assistant quando o valor for Carpenter' s Assistant
A melhor solução é provavelmente a da @BioGeek usando titlecase de Stuart Colville. Qual é a mesma solução proposta por @Etienne.
fonte
O título começa com palavra maiúscula e que não corresponde ao artigo.
fonte
Uma linha usando compreensão de lista e o operador ternário
Demolir:
for word in "Wow, a python one liner for titles".split(" ")
Divide a string em uma lista e inicia um loop for (na compreensão da lista)word.title() if word not in "the a on in of an" else word
usa o método nativotitle()
para capitalizar a string se não for um artigo" ".join
junta os elementos da lista com um separador de (espaço)fonte
Um caso importante que não está sendo considerado são os acrônimos (a solução python-titlecase pode lidar com acrônimos se você os fornecer explicitamente como exceções). Em vez disso, prefiro simplesmente evitar o rebaixamento. Com essa abordagem, as siglas que já estão em maiúsculas permanecem em maiúsculas. O código a seguir é uma modificação daquele originalmente fornecido pelo dheerosaur.
Quando executado, ele produz o seguinte:
fonte