Programa de Contagem de Palavras - 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çãoget_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çãoget_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çãomain
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.
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
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