Você pode converter uma string em um objeto de arquivo usando io.StringIO
e depois passá-la para o csv
módulo:
from io import StringIO
import csv
scsv = """text,with,Polish,non-Latin,letters
1,2,3,4,5,6
a,b,c,d,e,f
gęś,zółty,wąż,idzie,wąską,dróżką,
"""
f = StringIO(scsv)
reader = csv.reader(f, delimiter=',')
for row in reader:
print('\t'.join(row))
versão mais simples com split()
novas linhas:
reader = csv.reader(scsv.split('\n'), delimiter=',')
for row in reader:
print('\t'.join(row))
Ou você pode simplesmente split()
essa sequência em linhas usando \n
como separador e, em seguida, split()
cada linha em valores, mas dessa forma você deve estar ciente de citar, portanto, csv
é preferível usar o módulo.
No Python 2, você precisa importar StringIO
como
from StringIO import StringIO
em vez de.
.split('\n')
, você pode usar.splitlines()
.Simples - o módulo csv também funciona com listas:
fonte
.split('\n')
isso fará coisas estranhas se seus campos contiverem novas linhas.O documento oficial para
csv.reader()
https://docs.python.org/2/library/csv.html é muito útil, que dizfonte
Para analisar um arquivo CSV:
fonte
3, "4,5,6, 6
deve ser tratado como três campos em vez de cinco.Como outros já apontaram, o Python inclui um módulo para ler e gravar arquivos CSV. Funciona muito bem desde que os caracteres de entrada fiquem dentro dos limites ASCII. Caso você queira processar outras codificações, é necessário mais trabalho.
A documentação do Python para o módulo csv implementa uma extensão do csv.reader, que usa a mesma interface, mas pode lidar com outras codificações e retorna cadeias unicode. Basta copiar e colar o código da documentação. Depois disso, você pode processar um arquivo CSV como este:
fonte
'utf-8-sig'
como codec em vez de'utf-8'
.De acordo com a documentação:
Basta transformar sua string em uma lista de elementos únicos.
Importar o StringIO parece um pouco excessivo para mim quando este exemplo está explicitamente nos documentos.
fonte
https://docs.python.org/2/library/csv.html?highlight=csv#csv.reader
Assim, a
StringIO.StringIO()
,str.splitlines()
ou mesmo um gerador são todos bons.fonte
Aqui está uma solução alternativa:
Aqui está a documentação
fonte
Use isso para ter um csv carregado em uma lista
fonte
O Panda é uma biblioteca bastante poderosa e inteligente que lê CSV em Python
Um exemplo simples aqui, eu tenho o arquivo example.zip com quatro arquivos.
Depois de ter dados, você pode manipular para jogar com uma lista ou outros formatos.
fonte