首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CsvReader Next函数

CsvReader Next函数
EN

Stack Overflow用户
提问于 2013-07-07 23:22:59
回答 3查看 35.6K关注 0票数 10

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

代码语言:javascript
复制
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)

如您所见,我将csv文件作为列表返回,然后将其传递给generate_xml函数。但是,当我运行完整的程序时,有一个

代码语言:javascript
复制
error: 'list' object has no attribute 'next'
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-07 23:23:57

你有一个列表,而不是一个迭代器。只需对其进行切片:

代码语言:javascript
复制
for row in reader[1:]:

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

代码语言:javascript
复制
def read_csv(inputfile):
    reader = csv.reader(inputfile)
    next(reader)
    return list(reader)

最好返回reader对象,而不是将所有行都读入内存;除非您绝对需要随机访问这些行。

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

否则就不会使用for row in reader.next(),因为csv.reader()迭代器上的.next()返回一行。

票数 29
EN

Stack Overflow用户

发布于 2017-03-30 10:40:23

对于python 2.x,代码是:

代码语言:javascript
复制
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)

对于python 3.x,请使用next(r)而不是r.next()

票数 6
EN

Stack Overflow用户

发布于 2022-02-26 23:32:40

您可以使用np.loadtxt

代码语言:javascript
复制
import numpy as np

path = "file.csv"
data = np.loadtxt(path, dtype=np.float32, delimiter=",",skiprows=1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17513438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档