¿Cómo leer una sola línea de datos csv en Python?

89

Hay muchos ejemplos de lectura de datos csv usando python, como este:

import csv
with open('some.csv', newline='') as f:
  reader = csv.reader(f)
  for row in reader:
    print(row)

Solo quiero leer una línea de datos e ingresarla en varias variables. ¿Cómo puedo hacer eso? He buscado en todas partes un ejemplo funcional.

Mi código solo recupera el valor de i, y ninguno de los otros valores

reader = csv.reader(csvfile, delimiter=',', quotechar='"')
for row in reader:
  i = int(row[0])
  a1 = int(row[1])
  b1 = int(row[2])
  c1 = int(row[2])
  x1 = int(row[2])
  y1 = int(row[2])
  z1 = int(row[2])
andrebruton
fuente
¿cuál es la estructura de su csv? ¿Qué es rowcuando estás iterando a través del lector?
dm03514

Respuestas:

141

Para leer solo la primera fila del archivo csv, utilice next()el objeto del lector.

with open('some.csv', newline='') as f:
  reader = csv.reader(f)
  row1 = next(reader)  # gets the first line
  # now do something here 
  # if first row is the header, then you can do one more next() to get the next row:
  # row2 = next(f)

o bien:

with open('some.csv', newline='') as f:
  reader = csv.reader(f)
  for row in reader:
    # do something here with `row`
    break
Ashwini Chaudhary
fuente
38

podría obtener solo la primera fila como:

with open('some.csv', newline='') as f:
  csv_reader = csv.reader(f)
  csv_headings = next(csv_reader)
  first_line = next(csv_reader)
dm03514
fuente
2
Probablemente, es bueno agregar "with open ('csv_file', 'r')" como f: csv_reader = csv.reader (f) ... "
Sanchit
23

Puede usar la biblioteca de Pandas para leer las primeras líneas del enorme conjunto de datos.

import pandas as pd

data = pd.read_csv("names.csv", nrows=1)

Puede mencionar el número de líneas que se leerán en el parámetro nrows.

Aravind Krishnakumar
fuente
13

De la documentación de Python :

Y aunque el módulo no admite directamente el análisis de cadenas, se puede hacer fácilmente:

import csv
for row in csv.reader(['one,two,three']):
    print row

Simplemente coloque los datos de su cadena en una lista de singleton.

Robert Elwell
fuente
8

La forma sencilla de obtener cualquier fila en un archivo csv

import csv
csvfile = open('some.csv','rb')
csvFileArray = []
for row in csv.reader(csvfile, delimiter = '.'):
    csvFileArray.append(row)
print(csvFileArray[0])
Oscar.Chou
fuente
3
Para que esto funcione en python3, simplemente elimine la 'b' en 'rb'
Ricky Avina
1
Esto simplemente funciona, en realidad sin el delimiter='.'.
suvtfopw
1
Para responder a la pregunta de los carteles, simplemente agregue un breakdespués de csvFileArray.append(row)y solo leerá la primera línea.
StratusBase LLC
4

Solo como referencia, forse puede usar un bucle después de obtener la primera fila para obtener el resto del archivo:

with open('file.csv', newline='') as f:
    reader = csv.reader(f)
    row1 = next(reader)  # gets the first line
    for row in reader:
        print(row)       # prints rows 2 and onward
Emerson Peters
fuente
2

Para imprimir un rango de línea, en este caso de la línea 4 a la 7

import csv

with open('california_housing_test.csv') as csv_file:
    data = csv.reader(csv_file)
    for row in list(data)[4:7]:
        print(row)
Biplob Das
fuente