2016-08-03 4 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() 
関連する問題