with open(the_file, 'r+') as f:
f.seek(-1, 2) # go at the end of the file
if f.read(1) != '\n':
# add missing newline if not already present
f.write('\n')
f.flush()
f.seek(0)
lines = [line[:-1] for line in f]
或者一个更简单的方法是用 "换行 "来代替。
[line.rstrip('\n') for line in file]
甚至,虽然很不容易读懂。
[line[:-(line[-1] == '\n') or len(line)+1] for line in file]
这是利用了 "or "的返回值不是布尔值,而是被评估为真或假的对象这一事实。
`readlines'方法实际上等同于。
def readlines(self):
lines = []
for line in iter(self.readline, ''):
lines.append(line)
return lines
# or equivalently
def readlines(self):
lines = []
while True:
line = self.readline()
if not line:
break
lines.append(line)
return lines
def getText():
file=open("ex1.txt","r");
names=file.read().split("\n");
for x,word in enumerate(names):
if(len(word)>=20):
return 0;
print "length of ",word,"is over 20"
break;
if(x==20):
return 0;
break;
else:
return names;
def show(names):
for word in names:
len_set=len(set(word))
print word," ",len_set
for i in range(1):
names=getText();
if(names!=0):
show(names);
else:
break;
你可以使用
str.splitlines
读取整个文件并分割行。或者你可以用手把换行符剥离。
注意:这最后一个解决方案只有在文件以换行结尾时才有效,否则最后一行会失去一个字符。
这个假设在大多数情况下是正确的(特别是对于由文本编辑器创建的文件,无论如何,它们往往*会在结尾添加一个换行)。
如果你想避免这种情况,你可以在文件的结尾添加一个换行。
或者一个更简单的方法是用 "换行 "来代替。
甚至,虽然很不容易读懂。
这是利用了 "or "的返回值不是布尔值,而是被评估为真或假的对象这一事实。
`readlines'方法实际上等同于。
由于
readline()
保留换行,所以readlines()
也保留换行。注意:为了与
readlines()
对称,writelines()
方法不*添加结尾换行,所以f2.writelines(f.readlines())
在f2
中产生f
的精确副本。我认为这是最好的选择。
另一个例子。
每次只读一行文件。 从字符串末尾删除不需要的字符 [
str.rstrip(chars)
][1] 。另见
str.strip([chars])
和str.lstrip([chars])
。[1]: https://docs.python.org/2/library/stdtypes.html#str.rstrip
(python >= 2.0)
试试这个。
去掉所有的前导和尾部的空格(灵感来自 [Абага's Answer][1]) -------。
要删除所有尾部的空格,包括新行--。
如果你只想删除尾部的换行符,而不删除空白字符--。
P.S.如果你觉得对你有帮助,那么也请你给他加注。
[1]: https://stackoverflow.com/a/54479377/1772898