Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Acentos

Com o que vimos até aqui, já conseguimos tratar corretamente acentos? Porque ao fazer esse exercício usando como input "João" e "José" o negócio pegou fogo.

O que tentei foi cadastrar João, Marcelo e José. Na sequência rodei a opção de consulta com a seguinte regex: \b[jJ][oO].+\b

No exemplo que estou rodando agora tenho 6 strings: Fabio, Flavio, Nico, João, Marcelo, José

Ao rodar com aquele regex ali, ele retorna uma lista com somente um elemento, sendo ele ['Jo\xc3\xa3o Marcelo Jos']

def procurar_regex(nomes):
    print('Digite a expressão regular:')
    regex = raw_input()
    nomes_como_string = ' '.join(nomes)
    resultados = re.findall(regex, nomes_como_string)
    print resultados
6 respostas

Você rodou o programa pelo console do python ou pelo terminal usando o binário do python?

Se foi pelo console do Python, dá uma olhada nessa resposta:

https://cursos.alura.com.br/forum/topico-duvida-encoding-22894

Só me dá um retorno depois se ficou clara a questão.

Opa Flavio, então, eu rodei pelo terminal mesmo, usando o app.py.

Até conferi se era o encoding, mas já tá marcando no topo do arquivo que é UTF-8, inclusive ele registra os dados corretamente, deu pra ver na listagem. A ideia é que esse regex ali funcionasse mesmo? Tenho pouca experiência com regex então tive bastante dúvida se estava certo ali.

No caso, eu estava rodando agora a tarde em uma máquina com Ubuntu 14, não sei se pode afetar em algo.

solução!

Oi Matheus,

o problema é o \b no final da regex que não reconhece o char é como word char. Tente a regex:

\b[jJ][oO][\wéã]+

Nessa regex só estou pegando é e ã, faltam as outras letras com acentos.

abs

Fala Nico,

pois é, eu tentei inventar alguma coisa com o "\w" ali (tentei '\w|é|ã' e não funcionou com os pipes, tem um exemplo assim na transcrição da vídeo-aula, talvez tenha que ajustar lá), mas não sabia que era só colocar as letras com acentos logo na sequência.. faz bastante sentido.

Obrigado