Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Expressão regular que reconheça palavras na língua portuguesa (acentuadas) usando Python

Desenvolva a função frequency(), que toma uma string como entrada, calcula a frequência de cada palavra na string e retorna um dicionário que mapeia palavras na string à sua frequência. Você deverá usar uma expressão regular (regex) para obter a lista de todas as palavras na string.

O que eu fiz:

from re import findall
def frequency(string):
    padrao = "[a-zA-Z]+"
    palavras = findall(padrao,string)
    dicionario = {}
    for w in palavras:
        if w in dicionario:
            dicionario[w] += 1
        else:
            dicionario[w] = 1
    return dicionario


string = "Eu desconfio que houve uma sabotagem, exatamente para manchar a gestão eficiente que está sendo feita na Cedae, preparando ela para o leilão"
print(frequency(string))

Saída:

{'Eu': 1, 'desconfio': 1, 'que': 2, 'houve': 1, 'uma': 1, 'sabotagem': 1, 'exatamente': 1, 'para': 2, 'manchar': 1, 'a': 1, 'gest': 1, 'o': 3, 'eficiente': 1, 'est': 1, 'sendo': 1, 'feita': 1, 'na': 1, 'Cedae': 1, 'preparando': 1, 'ela': 1, 'leil': 1}

Pode-se observar na saída que a expressão regular [a-zA-Z]+ não reconhece a acentuação das palavras na língua portuguesa. Como melhorar a regex de forma a capturar as palavras acentuadas corretamente?

1 resposta
solução!

Você pode usar a seguinte expressão para verificar palavras acentuadas (Minúsculas e Maiúsculas):

[\wÀ-ú]

Testei no site abaixo: