Dúvida com acentuação em Python.

1. Dúvida com acentuação em Python.

Luiz
lacastelos

(usa KUbuntu)

Enviado em 25/06/2020 - 13:16h

Olá pessoal, sou novo aqui e estou aprendendo a programar agora. Tenho um questionamento que talvez alguém aqui possa ajudar um cara totalmente iniciante a sanar.

Primeiro de tudo, vou colocar um pequeno trecho de código para verem como estou fazendo e depois vou colocar a saída que estou tendo. Aí sim exponho minha dúvida.

O "código":

#!/usr/bin/env python
# -*- coding: utf-8 -*-

primeiro_nome = "antônio"
sobre_nome = "neto e silva"
nome_completo = primeiro_nome + " " + sobre_nome

print("Hello, " + nome_completo.title() + "."
"\n\nWelcome.")

print("Vamos testar tabulação, " + nome_completo.title() + "?"
"\n\n\tWelcome.")


A saída:

Hello, AntôNio Neto E Silva.

Welcome.
Vamos testar tabulação, AntôNio Neto E Silva?

Welcome.


------------------
(program exited with code: 0)
Press return to continue


Bem, o "programa é rídículo, mas é para eu tentar entender a parte de acentuação.

A dúvida é a seguinte:

A saída não é como eu gostaria que fosse. Notem que após a acentuação a letra volta a ser maiúscula, como em [antôNio]. O mesmo não ocorre após "ç" e "~", como em [tabulação].

Alguém teria uma sugestão para resolver essa questão de ter letra maiúscula após a acentuação quando não deveria ser?

Outra coisa,abusando um pouco. Entre a palavra Neto e a palavra Silva tem um "E" que aparece maiúsculo (claro que apareceria assim devido ao formato que pedi "title()"]. Mas como eu poderia colocar essa letra em minúsculo se eu pedir para um usuário digitar seu nome na entrada de um programa e ele digitar: Antônio Neto e Silva em qualquer formato (tudo maiúsculo, tudo minúsculo, mesclado, etc) e eu quero a saída como escreveríamos no nosso idioma, ou seja, exatamente: Antônio Neto e Silva?

Desde já agradeço.


  


2. Re: Dúvida com acentuação em Python.

Lisandro Guerra
Lisandro

(usa Linux Mint)

Enviado em 25/06/2020 - 16:03h

Olá Luiz.
Esta questão do "N" maiúsculo depois da acentuação não acontece aqui para mim.

Python 3.6.9 (default, Apr 18 2020, 01:56:04)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> c = 'antônio neto e silva'
>>> c.title()
'Antônio Neto E Silva'


Sugiro esta solução, para que você a aprimore:

nome = 'antônio neto e silva'
nome_completo = []

splited_nome = nome.split() # fica assim ['antônio', 'neto', 'e', 'silva']

for parte in splited_nome:
if len(parte) > 2: # aqui poderia ser 3 para excluir também nomes com 'dos' e 'das' como em "dos Santos" ou "das Neves"
nome_completo.append(parte.capitalize())
else:
nome_completo.append(parte)
# fica assim ['Antônio', 'Neto', 'e', 'Silva']

print(' '.join(nome_completo)) # fica assim 'Antônio Neto e Silva'



3. Re: Dúvida com acentuação em Python.

Luiz
lacastelos

(usa KUbuntu)

Enviado em 25/06/2020 - 16:16h

Lisandro escreveu:

Olá Luiz.
Esta questão do "N" maiúsculo depois da acentuação não acontece aqui para mim.

>>> c = 'antônio neto e silva'
>>> c.title()
'Antônio Neto E Silva'


Sugiro esta solução, para que você a aprimore:

nome = 'antônio neto e silva'
nome_completo = []

splited_nome = nome.split() # fica assim ['antônio', 'neto', 'e', 'silva']

for parte in splited_nome:
if len(parte) > 2: # aqui poderia ser 3 para ecluir também nomes como 'dos' e 'das' com em "dos Santos" ou "das Neves"
nome_completo.append(parte.capitalize())
else:
nome_completo.append(parte)
# fica assim ['Antônio', 'Neto', 'e', 'Silva']

print(' '.join(nome_completo)) # fica assim 'Antônio Neto e Silva'


Lisandro, primeiramente muito obrigado por dedicar seu tempo.

Estranho, aqui continua acontecendo. Mais por curiosidade que tudo vou continuar tentando descobrir o motivo.

Muito obrigado pelo segundo método que me passou. Simples e eficiente.