任意の文字が 12 文字後の行と同じであるすべての行を印刷しようとしている場合:
for line in f:
for i, c in enumerate(line[:-12]):
if c == line[i+12]:
print(line)
break
12 行後の行と同じすべての行を印刷しようとしている場合、必要なループは 1 つだけであるという点で単純ですが、リストではなく行の反復子があるという点でより複雑なので、できます。このようにランダムにアクセスしないでください。
ファイルが十分に小さい場合の簡単な修正方法の 1 つは、リストを作成することです。
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
ます。また、すべての s から括弧を削除したい場合もありますprint
。)
いずれにせよ、あなたが何をしようとしているのかさえわかりませんcount
。途中で一致の数を保持したい場合はcount = 0
、ループの外側に移動し、count += 1
何かを印刷するたびに実行しますが、それを使用して行のインデックスなどを作成しようとしないでください。