1
resposta

poderia me explicar o por que das chaves

with open('dados.csv', 'w') as f:
    escritor = csv.writer(f)
    escritor.writerow(['nome','idade'])
    escritor.writerow(['Ana','32'])


with open('dados.csv', newline = '') as f:
    leitor = csv.reader(f)
    for linha in leitor:
            print(linha)

['nome', 'idade']
[]
['Ana', '32']
[]

1 resposta

Oi, Cauã.

1. Na escrita: Definindo uma estrutura

Quando você utiliza o método escritor.writerow(), o Python espera receber um objeto que ele possa percorrer para identificar cada coluna.

Ao colocar ['nome', 'idade'], você está criando uma lista.

  • O csv.writer entende que cada item dentro dessa lista representa uma coluna diferente.
  • Sem os colchetes, o Python poderia se confundir sobre onde termina um dado e começa outro.

2. Na leitura: Representação do Python

No trecho onde você faz a leitura:

for linha in leitor:
    print(linha)

O resultado no console aparece como ['nome', 'idade'] porque o csv.reader transforma cada linha do seu arquivo .csv em uma lista de strings.

Os colchetes na saída do print servem para indicar que aquele dado não é apenas um texto solto, mas sim uma estrutura organizada onde você pode acessar elementos específicos (como linha[0] para pegar apenas o nome).

Por que aparecem linhas vazias []?

Notei que no seu exemplo de saída aparecem alguns [] entre os dados. Isso acontece geralmente por causa do parâmetro newline.

Ao abrir um arquivo para escrever ('w'), é recomendado usar o parâmetro newline=''. Se ele for omitido em alguns sistemas operacionais (como o Windows), o Python pode adicionar uma quebra de linha extra a cada gravação, gerando essas linhas vazias que você vê ao ler o arquivo depois.

Exemplo ajustado para evitar linhas vazias:

import csv

# Adicionando o newline='' também na escrita
with open('dados.csv', 'w', newline='') as f:
    escritor = csv.writer(f)
    escritor.writerow(['nome', 'idade'])
    escritor.writerow(['Ana', '32'])

Os colchetes são seus aliados para garantir que o Python saiba exatamente o que é uma coluna e o que é uma linha inteira.

Ficou mais claro agora o motivo de eles aparecerem no seu código?

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!