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

Sobre o exercicio

Eu acabei pegando dois textos que são letras de musicas para fazer a contagem de caracteres. Entretanto, uma das letras possui varios paragrafos e por isso o \n aparece como um dos caracteres com maior frequencia de aparição. Sabendo que eu não me interesso por espaço e \n, mas somente pelas letras, como posso refazer o exercicio nesse sentido?

7 respostas

Ricardo, tudo bom? Você pode fazer uma "limpeza dos seus dados" (Data Cleaning) simples removendo os itens "\n" do seu dicionário e depois fazendo a contagem. Algo assim para a remoção:

for item in dicionario.values():
    if dataClean[i] == "\n":
             del dict.keys(dataClean[i])

Desculpa mas não entendi o que é dataClean[i]? Também bão entendi o que é dict.keys(dataClean[i]), tentei rodar aqui e não funcionou

Eu tentei fazer o iterador:

for chave in aparicoes.keys():
    if chave = "\n:
        del aparicoes[chave]

mas deu que o dicionario mudou de tamanho durante a iteração, eai eu pensei que nem precisa fazer a iteração essa, pq eu ja sei a chave do que eu vou excluir, é so fazer del aparicoes["\n"]

Então, ele muda mesmo de tamanho pq vc retirou os itens "\n". Isso é o data cleaning, a limpeza dos dados. A gente faz isso frequentemente quando está raspando dados (web scrapping) nas páginas WEB.

Não entendi. Quando eu tentei usar a iteração com del aparicoes[chave] acusou um erro de que o dicionario mudou de tamanho durante a operação. Agora você ta me falando que ele muda mesmo e que isso é normal. Como assim? O python acusou erro e não executou o codigo.

for chave in aparicoes.keys():
    if chave = "\n:
        del aparicoes[chave]

Além disso, continuo em duvida com o codigo que você postou

for item in dicionario.values():
    if dataClean[i] == "\n":
             del dict.keys(dataClean[i])

o que é dataClean? outro dicionario? o que é dict?

solução!

Olá Ricardo.

Você pode utilizar o str.replace() link, com ele você pode substituir o \n e o espaço por vazio, como exemplifiquei abaixo.

texto2 = texto1.replace('\n','').replace(' ','')

Primeiro substitui o \n e depois " " o vazio.

E dessa maneira vai poder fazer a contagem de letras sem levar consideração eles.

from collections import Counter
proporcoes = Counter(texto2)
proporcoes.most_common(10)

Utilizei a musica stressed-out no exemplo, se quiser testar com ela.

[('e', 271),
 ('o', 165),
 ('t', 164),
 ('a', 142),
 ('n', 118),
 ('s', 114),
 ('r', 107),
 ('u', 101),
 ('d', 100),
 ('h', 77)]

Se tiver alguma duvida não hesite em perguntar.

Bons estudos.

Olá Ricardo,

Você pode remover o \n e os espaços antes de tudo, antes de fazer a contagem:

Exemplo:

# Removendo '\n' e espaços do texto inicial
texto = texto.replace('\n', '').replace(' ', '')

# Agora podemos chamar o código da contagem...

Espero ter ajudado, qualquer dúvida é só falar!