我正在编写一个脚本,用于修改任何文本文件。它将空白行替换为空行,并删除文件末尾的空行。下面的图片展示了我想要的输出结果。
我已经非常接近期望的输出结果了。问题在于我无法去掉最后一个空白行。我认为这与最后一行有关。例如,' the lines below me should be gone
实际上是这样的 ' the lines below me should be gone\n'
。看起来新行被创建在前一行上。例如,如果第4行有\n
,那么实际上第5行将是空行而不是第4行。
需要注意的是,我不能使用rstrip
或strip
函数。
目前我的代码如下:
def clean_file(filename):
# function to check if the line can be deleted
def is_all_whitespace(line):
for char in line:
if char != ' ' and char != '\n':
return False
return True
# generates the new lines
with open(filename, 'r') as file:
file_out = []
for line in file:
if is_all_whitespace(line):
line = '\n'
file_out.append(line)
# removes whitespaces at the end of file
while file_out[-1] == '\n': # while the last item in lst is blank
file_out.pop(-1) # removes last element
# writes the new the output to file
with open(filename, 'w') as file:
file.write(''.join(file_out))
clean_file('test.txt')
.rstrip()
? - Karl Knechtel