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

Estou com duvida ao chamar os valores da string split

>>> arquivo = open('perfis.csv', 'r')
>>> for linha in arquivo:
...     valores = linha.split(',')
...
>>> valores[0]
'\n'
>>>
5 respostas

Dos valores que estão cadastrados em (perfil.csv). Só estou conseguindo chamar os valores que coloquei no inicio.

Olá Luisa,

verifiquei que vc não está fechando o arquivo. Pode ser que pelo fato de executar duas vezes o mesmo código no mesmo arquivo sem fechá-lo, isso esteja acontecendo.

Coloque um print logo após o for para verificar o que está sendo lido. Veja nesse exemplo:

In [6]: f = open('perfis.csv', 'r')                                             

In [7]: for linha in f: 
   ...:     print(linha) 
   ...:                                                                         
Ana Paula Gonçalves, 21-34345432, Amigas Ltda

Camila Almeida, 21-21215643, Auron Ltda 

Alexandrina Pessoa, 11-23416531, Primo Serviços

João da Silva, 45-21249834, Preço Ótimo

In [8]: for linha in f: 
   ...:     print(linha) 
   ...:  

Quando executo o segundo for, nada é exibido. Pois não fechei o arquivo antes de percorre-lo novamente.

O correto seria:

In [25]: file = open('perfis.csv', 'r') 
In [26]: for linha in file: 
    ...:     nome, fone, company = linha.split(',') 
    ...:     print(f"Nome: {nome}, Fone: {fone}, Company: {company}") 
    ...: file.close()

Nome: Ana Paula Gonçalves, Fone:  21-34345432, Company:  Amigas Ltda
Nome: Camila Almeida, Fone:  21-21215643, Company:  Auron Ltda 
Nome: Alexandrina Pessoa, Fone:  11-23416531, Company:  Primo Serviços
Nome: João da Silva, Fone:  45-21249834, Company:  Preço Ótimo

In [27]: 

Oi Luciano, estou fechando sim.

from models import* perfis=[] perfil = Perfil(nome='Luisa Kim', telefone='21 967654005', empresa='prog') perfis.append(perfil) arquivo = open('perfis.csv', 'r') for linha in arquivo: ... print(linha) ...

Luisa Kim, 21 967654005, prog

Ana Silva, 21-34345432, Amigas Ltda

Camila Almeida, 21-21215643, Auron Ltda

arquivo.close() arquivo = open('perfis.csv', 'r') for linha in arquivo: ... valores = linha.split(',') ... valores[0] '\n'

Luisa,

não entendi muito bem sua postagem. Mas postei um código aqui, veja se te ajuda

https://repl.it/join/qukwtgmw-olucianonet

solução!

A atribuição de valores que você está fazendo está dentro do loop que lê as linhas do arquivo. Isso faz com que a cada iteração os valores tenham os dados contidos em uma única linha do arquivo. Como as linhas são lidas de forma sequencial quando o loop termina a lista valores tem uma lista dos valores apenas da última linha.

Assim provavelmente o que está acontecendo é que o arquivo tem uma linha em branco no final.

Se quiser ver todas as linhas, o jeito mais simples seria dar um print em valores 'dentro' do loop, logo depois da atribuição, algo como:

for linha in arquivo:
    valores = linha.split(',')
    print( valores )