Ir ao conteúdo
  • Cadastre-se
JALuza

Python Busca em arquivos - python

Posts recomendados

Boa tarde, gente.

Gostaria de saber se tem como eu fazer uma pesquisa dentro de um arquivo no python.

Por exemplo, eu abro um arquivo .txt e faço uma busca de um termo dentro desse arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim!, certamente você consegue isso com o Python, mas agora te pergunto, como você quer a saída dos dados?

 

- Afirmando que achou a palavra e exibindo ela?

- Você quer contar quantas vezes a palavra ocorre no texto?

- Você quer montar uma lista que conterá várias palavras a serem pesquisadas, por exemplo uma lista [ 'Python', 'C#', 'Angular', 'JavaScript' ], essas 4 palavras serão procuradas e qualquer ocorrência delas será retornada como:

Python - True

C# - True

Angular - False

JavaScript - True

 

Tem várias possibilidades de saída para uma leitura de arquivo, especifique melhor o que você quer fazer com o resultado da busca.

 

Te dar o programa pronto não é legal e prejudica seu aprendizado, mas se você postar algum código aqui com a tentativa de realizar essa tarefa, eu posso lhe orientar e até mesmo corrigir possível erro na codificação!

 

Caso você não tenha ideia de onde começar, te recomendo ler a partir daqui: http://www.devfuria.com.br/python/manipulando-arquivos-de-texto/

 

Bons estudos!👍

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em ‎22‎/‎01‎/‎2020 às 20:04, fspjonny disse:

Sim!, certamente você consegue isso com o Python, mas agora te pergunto, como você quer a saída dos dados?

 

- Afirmando que achou a palavra e exibindo ela?

- Você quer contar quantas vezes a palavra ocorre no texto?

- Você quer montar uma lista que conterá várias palavras a serem pesquisadas, por exemplo uma lista [ 'Python', 'C#', 'Angular', 'JavaScript' ], essas 4 palavras serão procuradas e qualquer ocorrência delas será retornada como:

Python - True

C# - True

Angular - False

JavaScript - True

 

Tem várias possibilidades de saída para uma leitura de arquivo, especifique melhor o que você quer fazer com o resultado da busca.

 

Te dar o programa pronto não é legal e prejudica seu aprendizado, mas se você postar algum código aqui com a tentativa de realizar essa tarefa, eu posso lhe orientar e até mesmo corrigir possível erro na codificação!

 

Caso você não tenha ideia de onde começar, te recomendo ler a partir daqui: http://www.devfuria.com.br/python/manipulando-arquivos-de-texto/

 

Bons estudos!👍

É o seguinte:

Eu fiz um programinha bem simples para cadastro de agenda telefônica que salvaria todos os contatos e telefones em um arquivo .txt. Para salvar os contatos eu usei dicionários, de forma que é possível procurar um nome, por exemplo:

 

< agenda = {'nome' : 'telefone'} > , sendo o nome e o telefone inseridos pelo usuário

 

Porém esse dicionário não seria salvo dentro do programa, servindo apenas para escrever o arquivo de texto, dessa forma:

 

< arquivo.write(agenda) >

 

sendo que o arquivo está aberto usando o método 'a'.

 

Então eu gostaria de ler esse arquivo e fazer uma busca de um nome (no caso uma string), que retorne se o nome se encontra cadastrado e o telefone relacionado ao nome, mas não conheço nenhuma função que faça isso, nem como eu poderia criar uma função para tal.

 

Até o momento eu fiz o código para escrever os contatos, e depois disso o arquivo seria fechado para ser possível reabrir em modo de leitura para fazer a busca.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que entendi, você consegue carregar o txt e montar um dicionário.

Então a pesquisa poderá ser feita dessa forma:

# digamos que aqui voce tem seu dicionário carregado a partir do seu txt.
lista_telefone = {'Fulano1':987867127,'Fulano2':894567444,'Fulano3':973165190,'Fulano4':999866123}

pessoa = input('Buscar pessoa na agenda por nome: ')

if pessoa in lista_telefone: # Se a pessoa estiver no dicionário
    print(f'{pessoa} = {lista_telefone.get(pessoa)}')
else:
    print(f'Esta pessoa:[{pessoa}], não está na agenda.')

Se isso não te ajudar, seria bom colocar seu código aqui completo que eu teria uma visão melhor do que você está fazendo!

 

Na tela, o código acima apresenta esses resultados:

Quando tem a pessoa no dicionário:

image.png.67b7974d959fcb08aac844b0b651c592.png

 

E quando não tem a pessoa no seu dicionário:

image.png.ad81163e755424e4a52a12c865b59552.png

Compartilhar este post


Link para o post
Compartilhar em outros sites
11 horas atrás, fspjonny disse:

Pelo que entendi, você consegue carregar o txt e montar um dicionário.

Então a pesquisa poderá ser feita dessa forma:


# digamos que aqui voce tem seu dicionário carregado a partir do seu txt.
lista_telefone = {'Fulano1':987867127,'Fulano2':894567444,'Fulano3':973165190,'Fulano4':999866123}

pessoa = input('Buscar pessoa na agenda por nome: ')

if pessoa in lista_telefone: # Se a pessoa estiver no dicionário
    print(f'{pessoa} = {lista_telefone.get(pessoa)}')
else:
    print(f'Esta pessoa:[{pessoa}], não está na agenda.')

Se isso não te ajudar, seria bom colocar seu código aqui completo que eu teria uma visão melhor do que você está fazendo!

 

Na tela, o código acima apresenta esses resultados:

Quando tem a pessoa no dicionário:

image.png.67b7974d959fcb08aac844b0b651c592.png

 

E quando não tem a pessoa no seu dicionário:

image.png.ad81163e755424e4a52a12c865b59552.png

Depois de alguma pesquisa (ainda não sabia criar o dicionário a partir do arquivo) cheguei a seguinte função:

<def dicionario():

          arq = open('agenda.txt')

          dic = {}

          for linha in arq.readlines(): 

              nome = linha.split('{}')

              for nome_tel in nome:

                  val = nome_tel.split(':')

                  dic[val[0]] = val[1]

         return dic>

 

Sendo a minha agenda.txt: {'João': '123456789'}, utilizando a função eu tenho o seguinte retorno:

{"{'João'": " '123456789'}\n"}

 

Só que para pesquisar a key nesse dicionário, eu teria que digitar: "{'João'"

 

Como eu poderia eliminar aquele "{{' antes da key, de forma que eu possa digitar só 'João' e encontrar o meu resultado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok!, Você estava perto da solução!

Acho que posso te mostrar uma outra maneira ainda mais fácil de fazer isso com uso de biblioteca do Python, usando o módulo pickle.

 

O melhor mesmo seria você implementar sua agenda usando o SQLite3(nativo também do Python3), e voce teria muitas vantagens na sua aplicação em relação a usar arquivos TXT, e apesar de que eu não sei a finalidade do seu aplicativo, mas vamos lá!

 

Você pode criar duas funções:

-Uma para criar o dicionário e adicionar mais itens(update - leia em dicionários python),

-Uma outra função para ler o arquivo e carregar o dicionário para pesquisa.

 

No código abaixo coloquei os 3 elementos que fazem com que o programa funcione da forma como você precisa, basta agora arranjar eles em suas funções e chamá-las

import pickle

"""Função1() 
Salvar os dados em um arquivo TXT para um formato de dicionário, falta implementar
a entrada de novos dados e atualização do dicionário.
"""
dic={ 'Fulano1':987867127,'Fulano2':894567444,'Fulano3':973165190,'Fulano4':999866123} # Dicionário exemplo
arq = open('dicionario.txt','wb') # Se o arquivo não existir será criado.
pickle.dump(dic,arq)
arq.close()

"""Função2()
Carregar os dados de um arquivo TXT no formato de um dicionário.
"""
arq = open('dicionario.txt','rb')
dic = pickle.load(arq)
arq.close()
print (dic) # Essa linha deve ser removida, coloquei para exibir no exemplo impresso!


# Interface de usuário para manipulação da agenda (consulta apenas)
pessoa = input('Buscar pessoa na agenda por nome: ')

if pessoa in dic: # Se a pessoa estiver no dicionário
    print(f'{pessoa} = {dic.get(pessoa)}')
else:
    print(f'Esta pessoa:[{pessoa}], não está na agenda.')

Já está com a faca e o queijo na mão, agora é só dar uma pesquisada no termos utilizados e complementar o programa!

 

Veja que no resultado da tela que eu imprimi de propósito o dicionário e abaixo dela está a interface de entrada de dados feita pelo usuário.

image.png.4b29fa4016c8d1c0584914f7904f9412.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

@fspjonny Muito obrigado pelos conhecimentos. Creio que agora já tenho o suficiente para conseguir o programa.

Assim que possível vou testar essa biblioteca. 

2 horas atrás, fspjonny disse:

Ok!, Você estava perto da solução!

Acho que posso te mostrar uma outra maneira ainda mais fácil de fazer isso com uso de biblioteca do Python, usando o módulo pickle.

 

O melhor mesmo seria você implementar sua agenda usando o SQLite3(nativo também do Python3), e voce teria muitas vantagens na sua aplicação em relação a usar arquivos TXT, e apesar de que eu não sei a finalidade do seu aplicativo, mas vamos lá!

 

Você pode criar duas funções:

-Uma para criar o dicionário e adicionar mais itens(update - leia em dicionários python),

-Uma outra função para ler o arquivo e carregar o dicionário para pesquisa.

 

No código abaixo coloquei os 3 elementos que fazem com que o programa funcione da forma como você precisa, basta agora arranjar eles em suas funções e chamá-las


import pickle

"""Função1() 
Salvar os dados em um arquivo TXT para um formato de dicionário, falta implementar
a entrada de novos dados e atualização do dicionário.
"""
dic={ 'Fulano1':987867127,'Fulano2':894567444,'Fulano3':973165190,'Fulano4':999866123} # Dicionário exemplo
arq = open('dicionario.txt','wb') # Se o arquivo não existir será criado.
pickle.dump(dic,arq)
arq.close()

"""Função2()
Carregar os dados de um arquivo TXT no formato de um dicionário.
"""
arq = open('dicionario.txt','rb')
dic = pickle.load(arq)
arq.close()
print (dic) # Essa linha deve ser removida, coloquei para exibir no exemplo impresso!


# Interface de usuário para manipulação da agenda (consulta apenas)
pessoa = input('Buscar pessoa na agenda por nome: ')

if pessoa in dic: # Se a pessoa estiver no dicionário
    print(f'{pessoa} = {dic.get(pessoa)}')
else:
    print(f'Esta pessoa:[{pessoa}], não está na agenda.')

Já está com a faca e o queijo na mão, agora é só dar uma pesquisada no termos utilizados e complementar o programa!

 

Veja que no resultado da tela que eu imprimi de propósito o dicionário e abaixo dela está a interface de entrada de dados feita pelo usuário.

image.png.4b29fa4016c8d1c0584914f7904f9412.png

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

montagem2018-capa-newsletter2.jpg

PROMOÇÃO DE QUARENTENA

De R$ 39,90 por apenas R$ 19,90 só até as 23h59min deste domingo 29/03/2020

CLIQUE AQUI E COMPRE AGORA MESMO!