Python CSV читатель пропускает 9 заголовков

import os import csv def get_file_path(filename): currentdirpath = os.getcwd() file_path = os.path.join(os.getcwd(), filename) print(file_path) return(file_path) path = get_file_path('Invoice-Item.csv') def read_csv(filepath): with open(filepath, 'r') as csvfile: reader = csv.reader(csvfile) for i in range(0, 9): next(reader, None) for row in reader: print(row[0]) read_csv(path) 

Я ищу технику, чтобы пропустить 9 заголовков, а не функцию диапазона. Любая помощь будет оценена по достоинству. Ниже приведен образец файла csv

 Summary Journal Entry,JE-00000060 Journal Entry Date,28/02/2015 Accounting Period,Feb-15 Accounting Period Start,1/02/2015 Accounting Period End,28/02/2015 Included Transaction Types,Invoice Item Included Time Period,01/02/2015-09/02/2015 Journal Run,JR-00000046 Segments, , Customer Account Number,Transaction Amount 210274174,545.45 210274174,909.09 210274174,909.09 210274174,909.09 210274174,909.09 

  • Python Chunking CSV File Multiproccessing
  • загрузить csv в 2D-матрицу с numpy для построения графика
  • Обработка дополнительных строк новой строки (возврат каретки) в файлах csv, обработанных Python?
  • Pandas - pandas.DataFrame.from_csv vs pandas.read_csv
  • Можно ли сохранить порядок столбцов с помощью Python csv DictReader
  • python pandas read_csv разделитель в данных столбца
  • Какой хороший алгоритм ограничения скорости?
  • Смущенный файловым файлом python «w +»
  • Выделенный HTML для простого текста с использованием Python
  • с заявлением о работе над классом
  • Сравнение XML в модульном тесте в Python
  • Как удалить \ n из элемента списка?
  • 3 Solutions collect form web for “Python CSV читатель пропускает 9 заголовков”

    Вы можете использовать itertools.islice() чтобы пропустить фиксированное количество строк:

     from itertools import islice next(islice(reader, 9, 9), None) for row in reader: print(row[0]) 

    islice() предлагается пропустить 9 строк, а затем немедленно прекратить работу без дальнейших результатов. Он сам является итератором, поэтому вам нужно еще раз вызвать next() .

    Если вы хотите пропустить строки до «пустой» строки, для этого требуется другой подход. Вам придется проверять каждую строку и прекращать чтение, когда вы сталкиваетесь с тем, у которого есть только пустые ячейки:

     for row in reader: if not any(row): # only empty cells or no cells at all break for row in reader: print(row[0]) 

    Демонстрация последнего подхода:

     >>> import csv >>> import io >>> sample = '''\ ... Summary Journal Entry,JE-00000060 ... Journal Entry Date,28/02/2015 ... Accounting Period,Feb-15 ... Accounting Period Start,1/02/2015 ... Accounting Period End,28/02/2015 ... Included Transaction Types,Invoice Item ... Included Time Period,01/02/2015-09/02/2015 ... Journal Run,JR-00000046 ... Segments, ... , ... Customer Account Number,Transaction Amount ... 210274174,545.45 ... 210274174,909.09 ... 210274174,909.09 ... 210274174,909.09 ... 210274174,909.09 ... ''' >>> with io.StringIO(sample) as csvfile: ... reader = csv.reader(csvfile) ... for row in reader: ... if not [c for c in row if c]: ... break ... for row in reader: ... print(row[0]) ... Customer Account Number 210274174 210274174 210274174 210274174 210274174 

    Обратите внимание, что вы хотите оставить обработку новой строки для csv.reader ; при открытии вашего файла newline='' :

     with open(filepath, 'r', newline='') as csvfile: 

    Если вы используете numpy, посмотрите аргумент skip_header в genfromtxt ( http://docs.scipy.org/doc/numpy/user/basics.io.genfromtxt.html )

     import numpy as np r = np.genfromtxt(filepath, skip_header=9, names = ['account','amount'] , delimiter = ',') print(r.account[0],r.amount[0]) 

    Если вы захотите использовать pandas, read_csv сделает чтение файлов очень простым:

     import pandas as pd data = pd.read_csv(filename, skiprows=9) 
    Python - лучший язык программирования в мире.