Python CSV阅读器跳过9个标题

Python CSV阅读器跳过9个标题,python,csv,python-3.x,Python,Csv,Python 3.x,我正在寻找一种跳过9个标题的技术,而不是范围函数。任何帮助都将不胜感激。下面是csv文件的示例 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('

我正在寻找一种跳过9个标题的技术,而不是范围函数。任何帮助都将不胜感激。下面是csv文件的示例

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)       
您可以使用跳过固定数量的行:

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
islice()
对象被指示跳过9行,然后立即停止而不产生进一步的结果。它本身就是一个迭代器,因此仍然需要对其调用
next()

如果要跳过行直到“空”行,则需要另一种方法。当您遇到只有空单元格的行时,必须检查每一行并停止读取:

from itertools import islice

next(islice(reader, 9, 9), None)        
for row in reader:
    print(row[0])                   
后一种方法的演示:

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

for row in reader:
    print(row[0])                   
请注意,您希望将换行处理留给
csv.reader
;打开文件集时,换行符='':

您可以使用跳过固定数量的行:

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
islice()
对象被指示跳过9行,然后立即停止而不产生进一步的结果。它本身就是一个迭代器,因此仍然需要对其调用
next()

如果要跳过行直到“空”行,则需要另一种方法。当您遇到只有空单元格的行时,必须检查每一行并停止读取:

from itertools import islice

next(islice(reader, 9, 9), None)        
for row in reader:
    print(row[0])                   
后一种方法的演示:

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

for row in reader:
    print(row[0])                   
请注意,您希望将换行处理留给
csv.reader
;打开文件集时,换行符='':


如果您使用的是numpy,请查看genfromtxt()中的skip_header参数


如果您使用的是numpy,请查看genfromtxt()中的skip_header参数


如果您考虑使用大熊猫,<代码> Read Syvv 使读取文件非常简单:

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

如果您考虑使用大熊猫,<代码> Read Syvv 使读取文件非常简单:

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

使用WHILE这样的条件是否可行,因为我们只想读取文件的一部分。我们要一直读标题直到我们到达空白为止。line@RicardLe你没有空行;有一行有一个空单元格;逗号仍然有效。但是,你没有要求跳过任意计数,这是一个完全不同的问题。上面的建议我已经尝试过了,但它不会跳过9个标题。里卡德尔:啊,我错了,你在使用Python 3。将更正为
filter(None,…)
生成一个iterable,而不是列表。由于某些原因,它不起作用。它不会跳过标题。使用WHILE这样的条件是否可行,因为我们只想读取文件的一部分。我们要一直读标题直到我们到达空白为止。line@RicardLe你没有空行;有一行有一个空单元格;逗号仍然有效。但是,你没有要求跳过任意计数,这是一个完全不同的问题。上面的建议我已经尝试过了,但它不会跳过9个标题。里卡德尔:啊,我错了,你在使用Python 3。将更正为
filter(None,…)
生成一个iterable,而不是列表。由于某些原因,它不起作用。它不会跳过标题。