使用 CSV 文件在循环中跳过第一行(字段)? [复制]
Posted
技术标签:
【中文标题】使用 CSV 文件在循环中跳过第一行(字段)? [复制]【英文标题】:Skip first line(field) in loop using CSV file? [duplicate] 【发布时间】:2013-01-18 10:00:10 【问题描述】:可能重复: When processing CSV data, how do I ignore the first line of data?
我正在使用 python 打开 CSV 文件。我正在使用公式循环,但我需要跳过第一行,因为它有标题。
到目前为止,我记得是这样的,但它缺少一些东西:我想知道是否有人知道我正在尝试做的代码。
for row in kidfile:
if row.firstline = false: # <====== Something is missing here.
continue
if ......
【问题讨论】:
为什么有人给你看但不让你做笔记,为什么这与你的问题有关? 对 3.x 使用csv_data.__next__()
,对 2.x 使用 csv_data.next()
。更多详情***.com/a/63096202/10961238
【参考方案1】:
这样做的最佳方法是在将文件对象传递给csv
模块之后 跳过标头:
with open('myfile.csv', 'r', newline='') as in_file:
reader = csv.reader(in_file)
# skip header
next(reader)
for row in reader:
# handle parsed row
这可以正确处理多行 CSV 标题。
旧答案:
可能你想要这样的东西:
firstline = True
for row in kidfile:
if firstline: #skip first line
firstline = False
continue
# parse the line
实现相同结果的另一种方法是在循环之前调用readline
:
kidfile.readline() # skip the first line
for row in kidfile:
#parse the line
【讨论】:
next
函数是一种更简洁的方法。
如果第一行中的一个值可以包含换行符\n
字符,这将不起作用。【参考方案2】:
有很多方法可以跳过第一行。除了Bakuriu所说的,我还要补充:
with open(filename, 'r') as f:
next(f)
for line in f:
和:
with open(filename,'r') as f:
lines = f.readlines()[1:]
【讨论】:
我相信这是最优雅的变体。谢谢! 如果第一行中的一个值可以包含换行符\n
字符,这将不起作用。【参考方案3】:
csvreader.next() 将 reader 的可迭代对象的下一行作为列表返回,根据当前方言进行解析。
【讨论】:
在python3中,方法是reader.__next__()
,应该使用next(reader)
调用以上是关于使用 CSV 文件在循环中跳过第一行(字段)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章