【发布时间】:2014-01-30 01:21:11
【问题描述】:
我正在编写一个修改任何文本文件的脚本。它用空行替换空白行。它会擦除文件末尾的空白行。图片显示了我想要的输出。
我能够非常接近所需的输出。问题是我无法摆脱最后一个空白行。我认为这与最后一行有关。例如 ' 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')
【问题讨论】:
-
你对这个问题做了很多研究,很清楚。 +1。
-
为什么“不能”使用
.rstrip()? -
@KarlKnechtel 那太容易了
-
这是家庭作业吗?
标签: python python-3.x