Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Função dict()

Boa noite, galera, tudo bom?

Ainda não fiz os cursos relacionados a Python, mas estou com uma dúvida em um trabalho da faculdade que é usando Python.

Seguinte, to com uma questão que preciso ler um arquivo de texto com vários sinonimos. Este arquivo está escrito da seguinte forma: a primeira palavra do arquivo é acreditar, por exemplo, aí dá uma espaço em branco e tem o sinonimo de acreditar, que no meu exemplo é crer. Pula uma linha e mais dois sinonimos.

crer acreditar
seguir continuar
adoçar açucarar
...

E por aí vai neste formato. No meu exercício eu tenho que receber este arquivo em um dicionário:

dicionário = {"crer":"acreditar", "seguir":"continuar", ...}

A segunda parte do exercício é ler um segundo arquivo de texto com um texto de várias linhas e substituir algumas palavras iguais pelo seu sinonimo, de acordo com o dicionário e reescrever em um outro arquivo de texto:

Meu arquivo de texto antes das alterações:

é importante crer que mesmo diante de grandes problemas
somos capazes de superar nossas limitacoes e
seguir no caminho que leva ao sucesso

Meu arquivo após as alterações:

e importante acreditar que mesmo diante de grandes adversidades
somos capazes de vencer nossas limitacoes
e avancar no caminho que leva ao sucesso

Pois bém, eu gostaria de saber como fazer a consulta da chave do dicionário se é igual ao texto recebido e mudar a palavra do texto pelo valor do dicionario de sinonimos.

Será que alguém pode me ajudar? Estou certo em fazer esse tipo de pergunta aqui? Caso não, me avise, por favor. Muito obrigado! :)

5 respostas

Vc já fez algum código? Se tiver feito coloca no GIT e posta aqui. O que posso fazer neste momento e indicar a leitura de um site que pode te ajudar a resolver seu problema: https://panda.ime.usp.br/pensepy/static/pensepy/11-Dicionarios/dicionarios.html

solução!

Olá,

Para criar o dicionário de palavras você poderia fazer algo assim

#!/usr/bin/env python

palavras = {}

with open('sinonimos.txt', 'r') as file:
    for line in file:
        primeira_palavra = line.split(' ')[0]
        segunda_palavra = line.split(' ')[1]

        palavras[ primeira_palavra ] = segunda_palavra.replace('\n', '')

E para fazer o replace das palavras poderia fazer algo assim

#!/usr/bin/env python

with open('texto.txt', 'r') as file:
    texto_original = file.read()
    texto_modificado = texto_original

    for palavra in palavras:
        texto_modificado = texto_modificado.replace( palavra, palavras[ palavra ] )


    print texto_original
    print "================"
    print texto_modificado

O resultado será o seguinte

é importante crer que mesmo diante de grandes problemas
somos capazes de superar nossas limitacoes e
seguir no caminho que leva ao sucesso
================
é importante acreditar que mesmo diante de grandes problemas
somos capazes de superar nossas limitacoes e
continuar no caminho que leva ao sucesso

Welton, eu escrevi sim um código, pois na questão tem algumas regras que tenho que seguir, como não manter o arquivo totalmente aberto ocupando espaço na memória, acho isso bobeira, pois vou ter que abrir e fechar o arquivo toda hora para ler cada linha separada e ir reescrevendo o arquivo, mas enfim... Vou postar meu código aqui.

Wagner, acho que do jeito que você escreveu, eu consigo reescrever. Eu não pensei no replace, na verdade eu nunca usei dicionário, eu usaria lista nisso, mas também não pode. Chegando em casa eu vou testar dessa forma e posto o código aqui também. Obrigado, galera!

Meu código tá aqui: https://github.com/eduardofigueiredo/Python/blob/master/Change%20words

Consegui resolver a questão do trabalho, muito obrigado pela ajuda, galera, vocês são os melhores :D