Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problemas com retorno do iterador.

Olá. Bem, eu criei um post a alguns dias atrás exatamente como este e achei que tivesse resolvido o problema. Mas quando fui testar o código o mesmo não funcionou. Então estou trazendo a dúvida novamente para ver se desta vez alguém poderia me ajudar. Afinal já não é a primeira vez que realizo um post no Fórum e não recebo nenhuma resposta por mais de 3/4 dias. Tentei até usar outros fóruns para tirar as dúvidas, mas mesmo lá não conseguirem ajudar, creio que aqui seja o melhor lugar, afinal o curso é da Alura e quem melhor para prestar suporte sobre o mesmo.

Eu só queria uma ajuda para não ficar estagnado em meus estudos.

import csv

def carregar_acessos():

    X = []
    Y = []

    arquivo = open('acesso_pagina.csv', 'rb')
    leitor = csv.reader(arquivo)
    next(leitor)


    for home,como_funciona,contato,comprou in leitor:

        dado = [int(home),int(como_funciona),int(contato)]
        X.append(dado)
        Y.append([int(comprou)])

return X, Y

Ele tenta retirar informações de um arquivo CSV contendo vários ZEROS e UNS. E tenho outro arquivo que mostra isto no terminal:

from dados import carregar_acessos

X,Y = carregar_acessos()

print(X)
print(Y)

Porém quando eu rodo o código o seguinte erro aparece:

Traceback (most recent call last):
      File "classifica_acesso.py", line 3, in <module>
        X,Y = carregar_acessos()
      File "/Users/josecarlosferreira/Desktop/machine-learning/dados.py", line 10, in carregar_acessos
        next(leitor)
    _csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)

Bem, vi algumas respostas no Stackoverflow em Inglês, porém mesmo tentando as soluções lá propostas o código não funcionava e continuava mantendo o mesmo erro.

Alguém poderia me ajudar?

1 resposta
solução!

Para quem quiser, aqui está forma que eu solucionei:

arquivo = open('acesso_pagina.csv', 'rt', encoding="utf-8")