【问题标题】:Python - Skip header row with csv.reader [duplicate]Python - 使用 csv.reader 跳过标题行 [重复]
【发布时间】:2018-07-20 20:24:42
【问题描述】:

我在一个大型(7000 行)csv 文件上尝试了这个建议的解决方案): Read File From Line 2 or Skip Header Row`

以下代码有效,但前提是我手动删除标题:

RatedTracksFile = open('pyall_rated.csv')
RatedTracksReader = csv.reader(RatedTracksFile)
data_list = list(csv.reader(RatedTracksFile))
eligible1 = open('py_all1.csv', 'a') # open py_all1.csv in append mode
for i in range(len(data_list)):
    trackrating = int(data_list[i][12])
    ...

我尝试了添加此建议代码的不同方法:

with open(fname) as f:
    next(f)
    for line in f:

我是 python 新手,不知道如何添加它。我一直收到相同的值类型错误,因为它仍然读取第 1 行,第 12 列(这是来自标题的字符串)而不是找到的整数第 2 行,第 12 列:

ValueError: invalid literal for int() with base 10: 'GroupDesc'

已解决:基于下面 Sphinx 的评论(谢谢!)。

【问题讨论】:

  • 从第二个循环。比如:for i in range(1, len(data_list)):

标签: python


【解决方案1】:
import csv
with open("1800.csv", "rb") as files:
   reader = csv.reader(files)
   next(reader, None)
   for data in reader:
      print data

这对我有用,试试这个。

【讨论】:

    【解决方案2】:

    如果您的标题包含您的列名,最好的解决方案是使用csv.DictReader

    >>> import csv
    >>> with open('names.csv') as csvfile:
    ...     reader = csv.DictReader(csvfile)
    ...     for row in reader:
    ...         print(row['first_name'], row['last_name'])
    ...
    Baked Beans
    Lovely Spam
    Wonderful Spam
    

    【讨论】:

      猜你喜欢
      • 2017-06-03
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-04
      相关资源
      最近更新 更多