Gerador de referência cruzada de texto
Publicado por Perfil removido (última atualização em 08/03/2010)
[ Hits: 5.961 ]
Download referencia_cruzada.zip
Gerador de referência cruzada de texto utilizando duas estruturas de dados (também implementadas):
1. Uma árvore binária de busca do tipo Splay.
2. Uma lista ligada dupla.
Envolve manipulação de arquivos e de strings.
# -*- coding: utf-8 -*- ''' Gera a referência cruzada de um texto, utilizando-se de uma árvore binária do tipo splay tree e uma lista ligada como estruturas auxiliares. ''' from splay_tree import SplayTree from lista_dupla import ListaLigadaDupla import os def abrir_arquivo(arquivo): try: fp = open(arquivo, "r") except: fp = None return fp def imprime_referencia(p): print("\n\n"+str(p.dado), end="") print(" -> ", end=" ") for i in range(len(p.plista)): print(str(p.plista[i])+"; ", end=" ") def salva_referencia(p): fp = open(arquivo_nome+"_referência.txt", "a") fp.write("\n\n"+str(p.dado)) fp.write(" -> ") for i in range(len(p.plista)): fp.write(str(p.plista[i])+"; ") fp.close() def remover_lista_da_arvore(p): p.plista = None def insere_palavra(palavra, linha): p = arvore.buscar(palavra) if not p: arvore.inserir(palavra) p = arvore.buscar(palavra) if not p.plista: p.plista = ListaLigadaDupla() p.plista.append(linha) def referencia_cruzada(fp): arvore.caminhar(1, remover_lista_da_arvore) arvore.remover_tudo() linha = fp.readline() num_linha = 1 while linha: palavras = linha.split() for palavra in palavras: palavra = palavra.upper() palavra_inserir = "" for c in palavra: if c not in ['"', "'", "(", ")", "[", "]", "{", "}", '“', '”', "?", "!", ";", ":", ".", ",", "\\", "|", "/"]: palavra_inserir += c if palavra_inserir != "": insere_palavra(palavra_inserir, num_linha) palavra = "" linha = fp.readline() num_linha += 1 fp.seek(0) arvore = SplayTree() file_open = None arquivo_nome = "" opcao = 0 while opcao != 4: os.system("clear") print("GERAÇÃO DE REFERÊNCIA CRUZADA A PARTIR DE ARQUIVOS TEXTO") print("\n1. Selecionar arquivo") print("2. Mostrar referência na tela") print("3. Salvar referência em arquivo") print("4. Sair") if file_open: print("\n\nArquivo aberto: "+arquivo_nome) try: opcao = int(input("Escolha a opção desejada: ")) except ValueError: opcao = 0 input("Você deve inserir somente números equivalentes às opções!") if opcao == 1: arquivo_nome = input("Digite o nome do arquivo que deseja abrir: ") file_open = abrir_arquivo(arquivo_nome) if file_open: input("Arquivo aberto com sucesso!") else: input("O arquivo selecionado não pode ser aberto...") if opcao == 2: if file_open: referencia_cruzada(file_open) arvore.caminhar(1, imprime_referencia) input("\nPressione ENTER para continuar...") else: input("Selecione um arquivo antes!") if opcao == 3: if file_open: referencia_cruzada(file_open) if os.path.exists(arquivo_nome+"_referência.txt"): os.remove(arquivo_nome+"_referência.txt") arvore.caminhar(1, salva_referencia) input("Referência cruzada gravada no arquivo: " +arquivo_nome+"_referência.txt") else: input("Selecione um arquivo antes!")
Invariância Discreta de Escala
Conversor de dólares em reais e vice-versa
Calcular aproximação de raiz quadrada
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Problemas ao instalar o PHP (10)
Descompactar arquivos winrar no linux (9)
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (12)