从文件中读取会删除文档中最后一个字符串的最后一个字母吗?

时间:2016-08-03 14:33:08

标签: python file python-3.x

我正在编写一个带有.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']

4 个答案:

答案 0 :(得分:2)

您正在切换没有换行符的最后一行:

IN

要解决此问题,您只需手动转到您的文件并附加额外的行即可。或者将所述行更改为strings = myLine[:-1] 。由于strings = myLine.strip()将处理空格和换行符,因此无需手动对字符串进行切片。

答案 1 :(得分:1)

最后一行没有换行符,所以当你做

     strings = myLine[:-1]

你剥掉线上的最后一个字符,无论它是什么,你杀死了一个真正的角色。

答案 2 :(得分:1)

您错过了文件的最终换行符,因此strings = myLine[:-1]会移除最终字符。如果用strings = myLine.rstrip()替换它将删除该行上的任何尾随空格但不会删除该最终字符。

答案 3 :(得分: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()