【问题标题】:Ignore/skip first row of csv with filter [duplicate]使用过滤器忽略/跳过 csv 的第一行 [重复]
【发布时间】:2016-09-20 18:01:54
【问题描述】:

是否可以使用filter 忽略或跳过 CSV 文件中的第一行?

filtered = filter(lambda p: celery == p[7],reader)
csv.writer(open(filename, 'w',newline=''), delimiter=',').writerows(filtered)

我正在尝试仅读取和过滤包含单词 celery 的第 7 行,但由于过滤器一直在读取标题 stuff 它会弄乱它下面的行。

                                                          Stuff                                                                                                   
Apple Pear Orange Cracker Honey Cheese Grape Bread Tomato Celery Lettuce Carrot
Apple Pear Orange Cracker Honey Cheese Grape Bread Tomato Celery Lettuce Carrot
Apple Pear Orange Cracker Honey Cheese Grape Bread Tomato Celery Lettuce Carrot

我想是因为它找不到celery它只是切断了它下面的线?

ge Cracker Honey Cheese Grape Bread Tomato Celery Lettuce Carrot
Apple Pear Orange Cracker Honey Cheese Grape Bread Tomato Celery Lettuce Carrot
Apple Pear Orange Cracker Honey Cheese Grape Bread Tomato Celery Lettuce Carrot

【问题讨论】:

    标签: python csv


    【解决方案1】:

    在构造filtered之前添加next

    通过调用 next() 方法从迭代器中检索下一项。如果给出默认值,则在迭代器耗尽时返回,否则引发 StopIteration。

    例子:

    next(reader, None) # skips a line - default set to None
    filtered = filter(lambda p: celery == p[7],reader)
    

    【讨论】:

    • 谢谢,请问如何插入? reader =(csv.reader(open(r'{1}\{0}\{0}.csv'.format(man_year,queue)),delimiter=',')
    • 在你构造一个reader后加next(reader, None)就行了。
    猜你喜欢
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多