1
resposta

Como indicar a linha em que cada palavra aparece em um arquivo texto?

O arquivo texto: https://easyupload.io/cfa7ai

import string
dic_linha_palavra = {}
numeros_linhas = []
with open("sample.txt") as f:
   texto = f.readlines()

   #print(texto)
   novo_texto = ""
   for num,linha in enumerate(texto,1):
        #print(f"{num}: {linha}") #aqui consigo imprimir o num da linha

        for char in linha.lower():
            for i in string.punctuation:
                char= char.replace(i, "")
            #print(char)
            novo_texto += char
   #print(novo_texto)

   for pal in novo_texto.split():#sem pontuacao, etc
       print(pal)# aqui nao consigo saber a linha de cada palavra

No código acima, eu já consegui abrir o arquivo texto e extrair as palavras (transformando em minúculas e sem pontuações). Só falta imprimir a linha onde cada palavra ocorre desta forma:

this: 1,6
in: 1,2

e assim por diante!

Alguma ideia de como alterar o meu código para poder imprimir a linha onde cada palavra aparece?

1 resposta

Olá Edson,

Você já está no caminho certo, diz se esse código abaixo te ajuda:

# Palavra que estamos buscando
palavra = 'this'
linhas_com_palavra = []

with open("sample.txt") as f:
    texto = f.readlines()

    for num, linha in enumerate(texto, 1):
        # Remove a pontuação e transforma em um array
        linha = ''.join((c if c.isalnum() else ' ') for c in linha).lower().split()

        if palavra.lower() in linha:
            linhas_com_palavra.append(num)

linhas_com_palavra = str(linhas_com_palavra).strip('[]')
print(f'{palavra}: {linhas_com_palavra}')

Qualquer dúvida é só falar!