从文件读取删除文档中最后一个字符串的最后一个字母?
问题描述:
我正在编写采用.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']
答
你切不具有换行符的最后一行:
strings = myLine[:-1]
为了解决这个问题你可以手动去你的文件并追加一行。或者将该行更改为。由于strip
将处理空格和换行符,因此无需手动分割字符串。
答
最后一行没有断行的,所以当你做
strings = myLine[:-1]
你可以去掉行中的最后一个字符,不管它是什么,并且你杀掉了一个实际的字符。
答
您错过了文件的最后换行符,因此strings = myLine[:-1]
删除了最后一个字符。如果将其替换为strings = myLine.rstrip()
,将删除行上的任何尾随空白,但不会删除该最终字符。
答
更改此:
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()