Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python CsvReader下一个函数_Python_Csv - Fatal编程技术网

Python CsvReader下一个函数

Python CsvReader下一个函数,python,csv,Python,Csv,我得到了一个csv文件,但我想跳过第一行数据,转到下一行。这是我的密码: def read_csv(inputfile): return list(csv.reader(inputfile)) #<----- def generate_xml(reader,outfile): root = Element('Solution') root.set('version','1.0') tree = ElementTree(root) h

我得到了一个csv文件,但我想跳过第一行数据,转到下一行。这是我的密码:

def read_csv(inputfile):
    return list(csv.reader(inputfile)) #<-----

def generate_xml(reader,outfile):
    root = Element('Solution')
    root.set('version','1.0')
    tree = ElementTree(root)        
    head = SubElement(root, 'DrillHoles')
    description = SubElement(head,'description')
    current_group = None
    i = 1
    for row in reader.next(): #<-----
        x1,y1,z1,x2,y2,z2,cost = row
        if current_group is None or i != current_group.text:
            current_group = SubElement(description, 'hole',{'hole_id':"%s"%i})

            collar = SubElement(current_group,'collar')
            toe = SubElement(current_group,'toe')
            cost1 = SubElement(current_group,'cost')
            collar.text = ','.join((x1,y1,z1))
            toe.text = ','.join((x2,y2,z2))
            cost1.text = cost
        i+=1
    head.set('total_holes', '%s'%i)
    indent.indent(root)
    tree.write(outfile)
您有一个列表,而不是迭代器。只需将其切片即可:

for row in reader[1:]:
或者,当您仍然有一个实际的
csv.reader()
对象时,跳过第一行:

def read_csv(inputfile):
    reader = csv.reader(inputfile)
    next(reader)
    return list(reader)
最好返回
读取器
对象,而不是将所有行读入内存;除非您绝对需要随机访问这些行

您还应该真正使用,因为它适用于Python2.6+和3,其中迭代器
.next()
方法已重命名为


否则,您永远不会对reader.next()中的行使用
,因为
csv.reader()
迭代器上的
.next()
返回一行。

对于python 2.x,代码是:

data = []
with open('xxx.csv') as f:
    r = csv.reader(f)
    name = r.next()[1] # assume the first 2 rows are name and unit
    unit = r.next()
    for row in r:
        data.append(row)
对于Python3.x,使用
next(r)
而不是
r.next()

data = []
with open('xxx.csv') as f:
    r = csv.reader(f)
    name = r.next()[1] # assume the first 2 rows are name and unit
    unit = r.next()
    for row in r:
        data.append(row)