我正在尝试在python中编写一个程序来读取.txt文件并检查
If line[i] == line [i+12]:
print line[i]
到目前为止,我有:
f=open('file.txt', "r")
count=0
for line in f:
while count < 1000:
print(count)
if line(count) == line(count+12):
print (line(count))
count+=1
我的输出是1000个零。
任何帮助表示感谢。
答案 0 :(得分:2)
如果您正在尝试打印所有字符与之后的12个字符相同的行:
for line in f:
for i, c in enumerate(line[:-12]):
if c == line[i+12]:
print(line)
break
如果您尝试打印的所有行与之后的12行相同,则更简单,因为您只需要一个循环,但更复杂的是您有一个迭代器行,而不是列表,所以你不能像这样随机访问它。
一个简单的解决方法,如果文件足够小,就是 make 一个列表:
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
。而且您也可能想要取消所有count
的括号峰)
无论哪种方式,我都不知道你甚至试图用count = 0
做什么。如果你想在整个过程中保持匹配数,请在循环外移动count += 1
,并在每次打印时执行{{1}},但不要尝试使用它来索引行或这样的事情。
答案 1 :(得分:0)
buffer = []
with open('file.txt', 'r') as f
for line in f:
if len(buffer) < 12:
buffer.append[line]
continue
if line == buffer[0]:
print line
buffer = buffer[1:11] + [line]