2016-08-03 77 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() 
相关问题