2015-12-03 41 views
1

我正在嘗試編寫一個顯示文本文件的文件所以我希望程序在刪除任何相鄰的相同行時顯示該文件。我的問題是,代碼不工作,因爲我知道我錯過了一些東西,我想知道如何寫這個問題的線我面臨?在Python中顯示沒有相鄰重複的文件

input 

1 
1 
2 
2 
1 
3 
1 
1 
1 


then the output should be: 
1 
2 
1 
3 
1 

我已經寫了現在的代碼是:

lines = open('list.txt', 'r').readlines() 

lines_set = set(lines) 

out = open('list.txt', 'w') 

for line in lines_set: 
    out.write(line) 

print(set(f.readlines())) 
+0

問題是什麼? – jiaweizhang

+0

您將不得不測試此行和上一行,並且只在它們不同時纔打印。請注意,「lines_set = set(lines)」不保留原始順序,並刪除重複項。添加一些打印語句,以便知道發生了什麼。 –

回答

2

正如在這個問題的評論中提到,set()是不是你想要的,因爲它會刪除所有重複的,不只是什麼相鄰的重複。你需要更類似這樣的東西:

with open(r'C:\Users\Gord\Desktop\list_in.txt', 'r') as f_in: 
    lines = f_in.readlines() 

with open(r'C:\Users\Gord\Desktop\list_out.txt', 'w') as f_out: 
    prev_line = '' 
    for line in lines: 
     if line != prev_line: 
      f_out.write(line) 
      prev_line = line 

with open(r'C:\Users\Gord\Desktop\list_out.txt', 'r') as f: 
    for line in f.readlines(): 
     print(line), 
+0

噢,我的天哪,謝謝!它沒有點擊我刪除所有重複項,而不是相鄰的重複項。這很有道理,@天才! – user5561413