Puede convertir una cadena en un objeto de archivo usando io.StringIO
y luego pasarla al 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))
versión más simple con split()
en nuevas líneas:
reader = csv.reader(scsv.split('\n'), delimiter=',')
for row in reader:
print('\t'.join(row))
O simplemente puede split()
esta cadena en líneas usando \n
como separador, y luego split()
cada línea en valores, pero de esta manera debe tener en cuenta las comillas, por lo csv
que se prefiere usar el módulo.
En Python 2 tienes que importar StringIO
como
from StringIO import StringIO
en lugar.
.split('\n')
, puedes usar.splitlines()
.Simple: el módulo csv también funciona con listas:
fuente
.split('\n')
hará cosas extrañas si sus campos contienen nuevas líneas.El documento oficial de
csv.reader()
https://docs.python.org/2/library/csv.html es muy útil, que dicefuente
Para analizar un archivo CSV:
fuente
3, "4,5,6, 6
debe tratarse como tres campos en lugar de cinco.Como otros ya han señalado, Python incluye un módulo para leer y escribir archivos CSV. Funciona bastante bien siempre que los caracteres de entrada permanezcan dentro de los límites ASCII. En caso de que desee procesar otras codificaciones, se necesita más trabajo.
La documentación de Python para el módulo csv implementa una extensión de csv.reader, que usa la misma interfaz pero puede manejar otras codificaciones y devuelve cadenas unicode. Simplemente copie y pegue el código de la documentación. Después de eso, puede procesar un archivo CSV como este:
fuente
'utf-8-sig'
como códec en lugar de'utf-8'
.Por la documentación:
Simplemente convierta su cadena en una sola lista de elementos.
Importar StringIO me parece un poco excesivo cuando este ejemplo está explícitamente en los documentos.
fuente
https://docs.python.org/2/library/csv.html?highlight=csv#csv.reader
Por lo tanto, un
StringIO.StringIO()
,str.splitlines()
o incluso un generador son todos buenos.fuente
Aquí hay una solución alternativa:
Aquí está la documentación.
fuente
Use esto para tener un csv cargado en una lista
fuente
Panda es una biblioteca bastante potente e inteligente que lee CSV en Python
Un ejemplo simple aquí, tengo el archivo example.zip con cuatro archivos.
Una vez que tenga datos, puede manipularlos para jugar con una lista u otros formatos.
fuente