reading importar how exportar examples datos data archivo python csv

how - Python importar csv a la lista



python csv reading (9)

Tengo un archivo CSV con aproximadamente 2000 registros.

Cada registro tiene una cadena y una categoría.

This is the first line, Line1 This is the second line, Line2 This is the third line, Line3

Necesito leer este archivo en una lista que se parece a esto;

List = [(''This is the first line'', ''Line1''), (''This is the second line'', ''Line2''), (''This is the third line'', ''Line3'')]

¿Cómo puedo importar esto esta csv a la lista que necesito usando Python?


Actualización para Python3:

import csv from pprint import pprint with open(''text.csv'', newline='''') as file: reader = csv.reader(file) l = list(map(tuple, reader)) pprint(l) [(''This is the first line'', '' Line1''), (''This is the second line'', '' Line2''), (''This is the third line'', '' Line3'')]

Si csvfile es un objeto de archivo, se debe abrir con newline='''' .
módulo csv


Actualización para Python3 :

import csv with open(''file.csv'', ''r'') as f: reader = csv.reader(f) your_list = list(reader) print(your_list) # [[''This is the first line'', ''Line1''], # [''This is the second line'', ''Line2''], # [''This is the third line'', ''Line3'']]


El siguiente es un fragmento de código que utiliza el módulo csv pero extrae el contenido de file.csv en una lista de dicts utilizando la primera línea, que es un encabezado de la tabla csv

import csv def csv2dicts(filename): with open(filename, ''rb'') as f: reader = csv.reader(f) lines = list(reader) if len(lines) < 2: return None names = lines[0] if len(names) < 1: return None dicts = [] for values in lines[1:]: if len(values) != len(names): return None d = {} for i,_ in enumerate(names): d[names[i]] = values[i] dicts.append(d) return dicts return None if __name__ == ''__main__'': your_list = csv2dicts(''file.csv'') print your_list


Extendiendo un poco sus requisitos y asumiendo que no le importa el orden de las líneas y desea agruparlas en categorías, la siguiente solución puede funcionar para usted:

>>> fname = "lines.txt" >>> from collections import defaultdict >>> dct = defaultdict(list) >>> with open(fname) as f: ... for line in f: ... text, cat = line.rstrip("/n").split(",", 1) ... dct[cat].append(text) ... >>> dct defaultdict(<type ''list''>, {'' CatA'': [''This is the first line'', ''This is the another line''], '' CatC'': [''This is the third line''], '' CatB'': [''This is the second line'', ''This is the last line'']})

De esta forma, obtiene todas las líneas relevantes disponibles en el diccionario bajo la clave de la categoría.



Un bucle simple sería suficiente:

lines = [] with open(''test.txt'', ''r'') as f: for line in f.readlines(): l,name = line.strip().split('','') lines.append((l,name)) print lines


Use el módulo docs.python.org/2/library/csv.html (Python 2.x):

import csv with open(''file.csv'', ''rb'') as f: reader = csv.reader(f) your_list = list(reader) print your_list # [[''This is the first line'', ''Line1''], # [''This is the second line'', ''Line2''], # [''This is the third line'', ''Line3'']]

Si necesitas tuplas:

import csv with open(''test.csv'', ''rb'') as f: reader = csv.reader(f) your_list = map(tuple, reader) print your_list # [(''This is the first line'', '' Line1''), # (''This is the second line'', '' Line2''), # (''This is the third line'', '' Line3'')]

Versión de Python 3.x (por @seokhoonlee a continuación)

import csv with open(''file.csv'', ''r'') as f: reader = csv.reader(f) your_list = list(reader) print(your_list) # [[''This is the first line'', ''Line1''], # [''This is the second line'', ''Line2''], # [''This is the third line'', ''Line3'']]


Pandas es bastante bueno en el manejo de datos. Aquí hay un ejemplo de cómo usarlo:

import pandas as pd # Read the CSV into a pandas data frame (df) # With a df you can do many things # most important: visualize data with Seaborn df = pd.read_csv(''filename.csv'', delimiter='','') # Or export it in many ways, e.g. a list of tuples tuples = [tuple(x) for x in df.values] # or export it as a list of dicts dicts = df.to_dict().values()

Una gran ventaja es que los pandas se ocupan automáticamente de las filas de los encabezados.

Si no has oído hablar de Seaborn , te recomiendo echarle un vistazo.

Ver también: ¿Cómo leo y escribo archivos CSV con Python?


result = [] for line in text.splitlines(): result.append(tuple(line.split(",")))