【问题标题】:Deleting blank lines with Python用 Python 删除空行
【发布时间】:2015-08-26 02:54:38
【问题描述】:

我有一个由两列组成的文本文件,我想将它们相互绘制。我需要从文本文件中删除最后一个空行。

我尝试了很多方法,例如:

file = open('test3.dat')
lines = file.readlines()
lines = lines[:-1]
w = open('test3.dat','w')
w.writelines([item for item in lines[:-1]])
w.close()

还有这个:

file = open('test3.dat')
lines = file.readlines() 
w = open('test3.dat','w')
del lines[-1] 
w.writelines(lines)
w.close()

但我总是以最后一个空行结束。我错过了什么?

更新: 这会删除我文件中的第二列,并转置第一列 - 也就是现在我的文件只是一行,其中包含曾经是第一列的值。感谢您提供任何其他帮助!

import fileinput
lines = [line.strip() for line in fileinput.FileInput('test3.dat') ]
open('test3.dat','w').writelines(lines)
w.close()

【问题讨论】:

  • 您认为为什么需要这样做?是否有其他代码抱怨“空白行”?
  • 在linux中,建议在文件末尾有一个空行。见this answer
  • @AstroLorraine 我回答你的问题了吗?如果是这样,你介意接受吗? (点击我的答案旁边的复选标记。)

标签: python string text


【解决方案1】:

如果要删除所有空行,可以这样做:

lines = [line.strip() for line in file.readlines() if len(line.strip()) != 0]

要仅删除最后的空白行,请执行以下操作:

pos = len(lines) - 1
while pos >= 0 and len(lines[pos].strip()) == 0:
  pos -= 1
lines = lines[:pos+1]

【讨论】:

    【解决方案2】:

    似乎最后一行的末尾有一个换行符,就像其他行一样;当在编辑器中查看时,它给出了最后一个空白行的外观。这不应该对你正在做的事情产生任何影响。

    【讨论】:

      【解决方案3】:

      您可以使用fileinput 库和strip() 函数来删除空行,例如

      import fileinput
      lines = [line.strip() for line in fileinput.FileInput("test3.dat") ]
      

      或者你可以使用isspace()函数,比如

      lines = [line for line in fileinput.FileInput("test3.dat") if not line.isspace()]
      

      【讨论】:

        猜你喜欢
        • 2018-12-20
        • 2015-11-16
        • 1970-01-01
        • 1970-01-01
        • 2011-03-26
        • 2019-06-12
        • 2013-06-26
        • 1970-01-01
        相关资源
        最近更新 更多