第一次在zip Python中只移动两个迭代器中的一个



我正在读取两个文本文件,并希望将它们一起迭代。但其中一个在第一行有标题,我想跳过。如果我在看到标题行后"继续",两个迭代器都会向前移动,并且我想在文件中比较的数据不再对齐。

我该怎么做才能跳过其中一个文件中的第一行,然后开始对这两个文件进行迭代?

通常,您希望在传递到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方法。

最新更新