我正在读取两个文本文件,并希望将它们一起迭代。但其中一个在第一行有标题,我想跳过。如果我在看到标题行后"继续",两个迭代器都会向前移动,并且我想在文件中比较的数据不再对齐。
我该怎么做才能跳过其中一个文件中的第一行,然后开始对这两个文件进行迭代?
通常,您希望在传递到zip
之前推进迭代器。您可以使用next
内置函数:
header = next(file1)
for line1, line2 in zip(file1, file2):
...
with open('path/to/file/without/headers') as file1, open('path/to/file/with/headers') as file2:
file2.readline()
answer = zip(file1, file2)
您可以使用文件对象的seek
方法移动到某一行:http://www.tutorialspoint.com/python/file_seek.htm
例如:
for f in (file1, file2):
if not is_header(f.readline()):
f.seek(0)
lines = zip(file1, file2)
只需将is_header
替换为一些检查,即可定义该行为标头。在这种情况下,如果第一行是头,这个文件的迭代器将在第二个位置,否则它将在第一个位置,因为我们用位置0调用seek
方法。