Regex de palavras com "ã"

625 views
Skip to first unread message

juliao...@cpejr.com.br

unread,
Mar 8, 2014, 9:46:09 AM3/8/14
to python...@googlegroups.com
Olá pessoal!
Sou nova em Python e estou agarrada em uma coisa...
Tenho que fazer um programa que, em um texto, identifique as palavras com "ã" ou "Ã"

Por enquanto está assim:

# coding: utf-8
import re,os,sys

arquivo = open ("dicionario.txt")
texto = arquivo.read()
padrao = re.compile(r'([a-z]*[Ã]+[ã]+[a-zà -ü]*)')

for linha in texto:
    procurar = padrao.search(linha)
    if procurar != None:
        palavra = procurar.groups()
        print (palavra)

O problema é que o padrão r'([a-z]*[Ã]+[ã]+[a-zà -ü]*)' não está casando...
Fiz assim porque, teoricamente, deveria casar com palavras que tenham "ã" independente se tiverem outra acentuação (p.ex. acentuação, que tem "ç" e "ã").

E outra, quando rodo ele não reconhece o re.search.groups(), diz que não existe...

Alguém pode me ajudar?

Cauê Beloni

unread,
Mar 10, 2014, 12:59:59 PM3/10/14
to python...@googlegroups.com
Não conheço muito expressar regular, mas fazendo um teste aqui este filtro [a-z] realmente não pega o cedilha, para isso foi necessário selecionar de [a-ç], desta forma pegou de a-z mais acentuados até o ç.


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo quot;Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Cauê Beloni

Danillo Souza

unread,
Mar 10, 2014, 1:05:30 PM3/10/14
to python...@googlegroups.com
Acho que isso vai resolver seu problema: http://stackoverflow.com/a/7207366

Gleber Diniz

unread,
Mar 10, 2014, 1:16:12 PM3/10/14
to python...@googlegroups.com

Ao usar "[Ã]+[ã]+", você está dizendo que tem que ter um "Ã" e também tem que ter um "ã",  isso vai casar com algo assim: xxxÃãxxx, o correto seria possuir um ou o outro desta forma (Ã|ã)+

Felipe Mobus

unread,
Mar 10, 2014, 2:54:07 PM3/10/14
to python...@googlegroups.com
mexer com coisas em encodings múltiplos é complicado. mexer com isso em regexp é mais complicado ainda :)

agora, se o que você está tentando fazer é detectar a presenção do acento til em palavras, o que você pode tentar é algo como isso.

a biblioteca NKFD faz um bocado de coisas legais. No caso, o que eu usei aqui foi a função normalize. O que ela faz, no modo "NFKD" é "desmontar" cada caracter do string, transformando "ã" em "a[COMBINING TILDE]", que é um dos jeitos de se fazer um "a com til" em utf-8.

no entanto, esse código que eu postei provavemente não vai resolver o seu problema os strings com encoding errado. provavelmente seria uma ideia filtrar isso antes


Felipe Mobus
http://fmob.us

Rodrigo Konrath

unread,
Mar 10, 2014, 4:04:04 PM3/10/14
to python...@googlegroups.com
Eu não sei trabalhar com Expressões Regulares em Python. Brinco bastante com Shell Script e Expressões Regulares.
No fim é tudo a mesma coisa, com um poucas diferenças nas interpretações de caracteres coringas.
Mas não consegui intender o que você quer pegar com a ER. Se explicares a ER posso tentar te ajudar.
Só não esquece que [ ] costuma ser usado para delimitar caracteres. [a-ZâÂ]+ diz todos os caracteres com letras minusculas + os  e â até que não tenha um deste caracteres.
Também tive alguns problemas com alguns caracteres em lugares errado.
Em shell script e acredito que em tudo que é lugar, o caracter "-" sempre é bom usar no início do "[ ]".
Creio que o "-" nisto "[a-zà -ü]' pode ter gerado o erro. normalmente 2 caracteres iguais no mesmo grupo de caracteres "[ ]" também gera erro.

Não intendi qual foi a do ¼.

Por favor, desculpa se eu estiver falando besteiras em relação a como o Python entende ER. Pois estou iniciando a programas em Python e não cheguei a parte das ER.
Tudo o que eu sei sobre ER foi o que li no livro do "Aurelio Marinho Jargas", e só utilizei em Shell Script.

Rodrigo W. Konrath
Técnico em Redes
Skype: rodrigo.w.konrath
Telefone: (48) 9800 -2137

Welington Carlos

unread,
Mar 10, 2014, 9:53:52 PM3/10/14
to python...@googlegroups.com
Julio, tenta [[:alnum:]] que é a classe POSIX para números e letras do no nosso idioma.

http://www.regular-expressions.info/posixbrackets.html
--

Atenciosamente

Welington Carlos
T.I - Analista de Suporte
Tel :8325-8845


"Ser homem não é a mesma coisa de ser adulto..."

Reply all
Reply to author
Forward
0 new messages