Python-删除文件末尾的空白文本行
我正在编写一个脚本来修改任何文本文件。它用空行替换空白行。它擦除文件末尾的空行。图中显示了我想要的输出 我能够非常接近期望的输出。问题是我不能去掉最后一个空行。我想这和最后一行有关。e、 gPython-删除文件末尾的空白文本行,python,python-3.x,Python,Python 3.x,我正在编写一个脚本来修改任何文本文件。它用空行替换空白行。它擦除文件末尾的空行。图中显示了我想要的输出 我能够非常接近期望的输出。问题是我不能去掉最后一个空行。我想这和最后一行有关。e、 g'我下面的行应该消失实际上看起来像这样'我下面的行应该消失\n'看起来像是在前一行上创建了新行。例如,如果第4行的代码为>>N< /代码>,行5实际上是空白行,而不是第4行。 我应该注意,我不能使用rstrip或strip 我的代码到目前为止 def clean_file(filename): #
'我下面的行应该消失
实际上看起来像这样'我下面的行应该消失\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')
\n
的基本意思是“创建另一行”
因此,当您删除了\n
中的所有行时,仍有前一行
the lines below me should be gone\n
这同样意味着“创建另一行”,超出您已经删除的行
既然您说您不能使用rstrip
,那么您可以使用
file_out[-1] = file_out[-1].strip('\n')
从最后一个元素中删除\n
。因为\n
不能存在于一行中的任何其他位置,rstrip
和strip
将具有相同的效果
或不带任何条带
或结束
:
if file_out[-1][-1] == '\n':
file_out[-1] = file_out[-1][:-1]
请注意,
\n
是单个字符,序数0x0a
为十六进制,而不是两个字符\
和n
,序数0x5c
和0x6e
。这就是为什么我们使用-1
而不是-2
你在这个问题上做了很多研究,而且非常清楚+1.为什么“不能”你使用.rstrip()
?@KarlKnechtel那太容易了这是家庭作业吗?@Vader那么我怀疑你可以使用文件输出[-1][-1]='\n'
@Vader你为什么想使用-2
<代码>'\n'是一个字符。@Vader'\n'
是一个写有“换行符”的字符。反斜杠('\')
是一种转义,用于将其与常规的'n'
@Vader区分开来,这样解析器就不会将其混淆为常规的'n'
。转义时,解析器将看到的'\n'
读取为一个字符,即“换行符”,而不是斜杠和“n”。@Vader Right。另一个例子是空字符<代码>'\0'不是斜杠和零的两个字符,而是整数值0
的单个字节(也不是零字符)。