Эти фрагменты должны выполнять ту работу, о которой вы просили.В начале я думал создать список duplicated_lines
, а затем написать все в конце.Но затем я понял, что могу оптимизировать производительность кода, избегая дополнительного заключительного цикла, просто записывая повторяющиеся элементы на лету
Как подчеркнул другой пользователь, не совсем понятно, хотите ли вы проверять только смежные двойные записиили повторяющиеся элементы независимо от позиции
В первом случае - где повторения следуют сразу после - это код:
# opening the source file
with open('hello.txt','r') as f:
# returns a list containing the original lines
data=f.readlines()
# creating the file to host the repeated lines
with open('duplicated.txt','a') as f:
for i in range(0, len(data)-1):
# stripping to avoid a bug if the last line is a repeated item
if(data[i].strip('\n') == data[i+1].strip('\n')):
print("Lines {}: {}".format(i, data[i]))
print("Lines {}: {}".format(i+1, data[i+1]))
#duplicated_lines.append(data[i])
print("Line repeated: " + data[i])
f.write("%s\n" % data[i])
Если вместо этого вы хотите проверить повторяющиеся строки по всему файлу, этоэто код:
# opening the source file
with open('hello.txt','r') as f:
# returns a list containing the original lines
data=f.readlines()
# creating the file to host the repeated lines
with open('duplicated.txt','a') as f:
for i in range(0, len(data)-1):
for j in range(i+1, len(data)):
# stripping to avoid a bug if the last line is a repeated item
if(data[i].strip('\n') == data[j].strip('\n')):
print("Lines {}: {}".format(i, data[i]))
print("Lines {}: {}".format(j, data[j]))
#duplicated_lines.append(data[i])
print("Line repeated: " + data[i])
f.write("%s\n" % data[i])