如果您尝试打印任何字符与后面的 12 个字符相同的所有行:
for line in f:
for i, c in enumerate(line[:-12]):
if c == line[i+12]:
print(line)
break
如果您尝试打印与后面 12 行相同的所有行,则更简单的是您只需要一个循环,但更复杂的是您有一个行迭代器,而不是列表,因此您可以t 像这样随机访问它。
如果文件足够小,一个简单的解决方法是制作一个列表:
lines = list(f)
for i, line in enumerate(lines[:-12]):
if line == lines[i+12]:
print(line)
更好的解决方法是使用itertools
创建迭代器的移动副本(这实际上适用于任一问题):
lines, lines12 = itertools.tee(f, 2)
lines12 = islice(lines12, 12, None)
for line, line12 in zip(lines, lines12):
if line == line12:
print(line)
(如果您使用的是 Python 2.x,您将希望在itertools.izip
此处使用,而不是zip
。而且您可能还希望从所有print
s 中去掉括号。)
无论哪种方式,我都不知道你甚至想用count
. 如果您想在此过程中保持匹配计数,请移动count = 0
循环外部,并在count += 1
每次打印某些内容时执行此操作,但不要尝试使用它来索引行或类似的东西。