Programa de Contagem de Palavras em Python
Neste artigo, exploraremos como manipular strings em Python com um exemplo prático: um programa que conta a frequência de palavras em um arquivo de texto. O código é simples e ilustra técnicas fundamentais de processamento de texto.
O código é o seguinte:
# Programa para contar palavras em um arquivo
import os
def get_words(filename):
"""Lê o arquivo, processa o texto e retorna uma lista de palavras ordenadas."""
with open(filename, encoding="utf8") as file:
text = file.read()
# Remove pontuações e normaliza o texto
text = text.replace("\n", " ")
for char in ",.?!":
text = text.replace(char, "")
text = text.lower()
# Divide o texto em palavras e ordena
words = text.split()
words.sort()
return words
def get_words_dict(words):
"""Cria um dicionário de frequência a partir de uma lista de palavras."""
words_dict = {}
for word in words:
words_dict[word] = words_dict.get(word, 0) + 1
return words_dict
def main():
"""Função principal para executar o programa."""
filename = input("Digite o caminho do arquivo: ")
if not os.path.exists(filename):
print("O arquivo especificado não existe.")
else:
words = get_words(filename)
words_dict = get_words_dict(words)
print(f"Número total de palavras: {len(words)}")
print(f"Número de palavras únicas: {len(words_dict)}")
print("Palavras utilizadas:")
for word, count in words_dict.items():
print(word.ljust(20), count)
if __name__ == "__main__":
main()
Explicação do código:
Função get_words
- Entrada: Recebe o nome de um arquivo de texto.
Processamento:
- Lê todo o conteúdo do arquivo.
- Remove caracteres de pontuação (
,
.
?
!
). - Converte o texto para letras minúsculas, normalizando o conteúdo.
- Substitui quebras de linha por espaços.
- Divide o texto em palavras usando espaços como delimitadores.
- Ordena as palavras alfabeticamente.
- Saída: Retorna uma lista ordenada de palavras.
Função get_words_dict
- Entrada: Recebe uma lista de palavras.
Processamento:
- Cria um dicionário onde cada chave é uma palavra única e o valor associado é o número de ocorrências dessa palavra.
- Usa o método
dict.get()
para incrementar a contagem de palavras de forma simplificada.
- Saída: Retorna um dicionário de frequência de palavras.
Função main
Processamento:
- Solicita ao usuário o caminho do arquivo.
- Verifica se o arquivo existe usando
os.path.exists()
. Se o arquivo não for encontrado, exibe uma mensagem de erro. Caso o arquivo exista:
- Chama
get_words
para obter a lista de palavras. - Chama
get_words_dict
para criar o dicionário de frequência. - Exibe estatísticas: número total de palavras, número de palavras únicas e a lista de palavras com suas contagens.
- Chama
- Saída: Exibe os resultados no console.
Para testar o programa, crie um arquivo de texto com o seguinte conteúdo:
Python é incrível. Python é simples e poderoso!
Salve o arquivo como texto.txt
e execute o programa. Você deve ver a seguinte saída:
Número total de palavras: 6 Número de palavras únicas: 5 Palavras utilizadas: e 2 incrível 1 poderoso 1 python 2 simples 1