Como Melhorar a Formatação de Nomes Completos utilizando str.replace
- #Python
Hoje, vamos resolver um problema comum que muitos de nós enfrentamos: como formatar nomes completos com iniciais maiúsculas e, ao mesmo tempo, manter as preposições em minúsculo.
O Desafio
Imaginem a seguinte situação: você tem uma lista de nomes completos, e deseja apresentá-los de maneira uniforme, com as iniciais em maiúsculas e, ao mesmo tempo, respeitando a tradição de manter as preposições em minúsculo.
A Origem das Preposições em Nomes Completos
Antes de estudarmos a solução, vamos refletir sobre a origem das preposições em nomes completos. No Brasil, por exemplo, é comum encontrar sobrenomes que incluem as preposições: "de", "da", "das", "dos" "do" . Estas preposições, muitas vezes, indicam a origem geográfica ou a filiação familiar. Diante dessa realidade, precisamos criar um código que respeite e preserve a apresentação original desses nomes.
A Solução: str.replace
Encontramos na documentação do Python a função replace que retorna uma cópia da string com todas as ocorrências da substring old substituídas por new. Se o argumento opcional count é fornecido, apenas as primeiras count ocorrências são substituídas: str.replace(old, new[, count])
Vamos criar uma função simples que formata nomes completos, aplicando iniciais maiúsculas e mantendo as preposições em minúsculo. Veja o código:
def formatar_nome(nome_completo):
# Utiliza o método title() para colocar a primeira letra de cada
# palavra em maiúscula
nome_formatado = nome_completo.title()
# Substitui as ocorrências das preposições pela mesma palavra em
# minúsculo
nome_formatado = (
nome_formatado.replace(" De ", " de ")
.replace(" Da ", " da ")
.replace(" Das ", " das ")
.replace(" Do ", " do ")
.replace(" Dos ", " dos ")
)
return nome_formatado
Aplicação Prática
Vejamos alguns exemplos do uso dessa função:
nome = 'MAXWELL DE OLIVEIRA CHAVES'
nome_formatado = formatar_nome(nome)
print(nome_formatado) # Output: Maxwell de Oliveira Chaves
nome = 'maria das virgens'
nome_formatado = formatar_nome(nome)
print(nome_formatado) # Output: Maria das Virgens
nome = 'josé do patrocinio'
nome_formatado = formatar_nome(nome)
print(nome_formatado) # Output: José do Patrocinio
nome = 'JOÃO DAS NEVES'
nome_formatado = formatar_nome(nome)
print(nome_formatado) # Output: João das Neves
Conclusão
Ao incorporar a função str.replace, conseguimos formatar nomes com iniciais maiúsculas e preposições em minúsculo.
Espero que esta solução seja útil em seus projetos.
Link sobre a documentação:
https://docs.python.org/pt-br/3/library/stdtypes.html?highlight=replace#str.replace