2016-08-03 79 views
1

我正在編寫採用.txt文檔的代碼,並在字符串列表中的每個.txt文件行上存儲每個單詞。然而,我的代碼決定它想要刪除最後一個字符串的最後一個字母,因爲一些隨機的原因,誰能告訴我爲什麼?從文件讀取刪除文檔中最後一個字符串的最後一個字母?

我的代碼:

import sys 
listofStr = [] 
print (" ") 
fname = input("Please enter file name: ") 
print (" ") 

try : 
    f = open(fname) 

    myLine = f.readline() 
    tuplist = [] 
    while (len(myLine)>0) : 
     strings = myLine[:-1] 


     listofStr.append(strings) 
     myLine = f.readline() 



    f.close() 

except IOError as e : 
    print("Problem opening file (Remember the file extension '.txt')") 
    sys.exit() 

print(listofStr) 

當跑:

Please enter file name: test.txt 

['TEST', 'WAS', 'VERY', 'SUCCESSFU'] 

預期結果:

['TEST','WAS','VERY','SUCCESSFUL'] 

回答

2

你切不具有換行符的最後一行:

strings = myLine[:-1] 

爲了解決這個問題你可以手動去你的文件並追加一行。或者將該行更改爲。由於strip將處理空格和換行符,因此無需手動分割字符串。

1

最後一行沒有斷行的,所以當你做

 strings = myLine[:-1] 

你可以去掉行中的最後一個字符,不管它是什麼,並且你殺掉了一個實際的字符。

1

您錯過了文件的最後換行符,因此strings = myLine[:-1]刪除了最後一個字符。如果將其替換爲strings = myLine.rstrip(),將刪除行上的任何尾隨空白,但不會刪除該最終字符。

1

更改此:

while (len(myLine)>0) : 
    strings = myLine[:-1] 
    listofStr.append(strings) 
    myLine = f.readline() 

這樣:

while myLine.strip() : 
    strings = myLine.strip() 
    listofStr.append(strings) 
    myLine = f.readline() 
相關問題