跳过Python读取文件中的空白行

5

我正在进行一个非常长的项目,我已经完成了所有工作,但在他要我们阅读的文件底部有一些空白空间,确实只是不能删除的空白空间。为了处理这个项目,我删除了它们,因为我不知道如何绕过它,所以我的当前打开/读取看起来像这样:

      file = open("C:\\Users\\bh1337\\Documents\\2015HomicideLog_FINAL.txt" , "r")
 lines=file.readlines()[1:]
 file.close()

我需要在这里添加什么才能忽略空行?或者当遇到空行时停止?

行可以有空格或制表符,并且看起来像是空的。 - furas
使用以下代码可以检测文件中的空行:for line in file: if not line.strip(): print("这是空行") - furas
空列表的布尔值应该是 False - Right leg
4个回答

9
您可以检查它们是否为空:
file = open('filename')
lines = [line for line in file.readlines() if line.strip()]
file.close()

6
for line in file:
  if not line.strip():
    ... do something

以下是阅读文件的最佳方式:
with open("fname.txt") as file:
    for line in file:
      if not line.strip():
        ... do something

with open会自动处理文件关闭。

如果你想要忽略只有空格的行


当你说“...做某事”的时候,我可以直接把 file.close 放在那里吗? - Brayden Hark
@BraydenHark with语句可以避免显式调用file.close - user3556757
那么在“做某事”中我应该放什么呢?或者我可以把它留空吗?很抱歉,我是一个非常新手的编程者,我不确定这是否适合我 =/ - Brayden Hark
使用这种方法时,我遇到了一个错误 "List index out of range",以下是代码:with open("C:\\Users\\Brayd\OneDrive\\Documents\\2015HomicideLog_FINAL.txt") as file: for line in file: lines=file.readlines()[1:] if not line.strip(): lines=file.readlines()[1:]我已尝试将底部命令替换为 file.close()print("它是空行"),但似乎没有起作用。 - Brayden Hark
如果我删除.txt文件底部的空格,代码将运行得非常好,但是我的教授想要我们读取的文件底部有空格,你有什么建议吗?@backtrack - Brayden Hark

3

以下是一种非常简单的跳过空行的方法:

with open(file) as f_in: 
    lines = list(line for line in (l.strip() for l in f_in) if line)

2
  1. 一种方法是使用lines列表并删除所有元素e,使得e.strip()为空。这样,您可以删除所有只有空格的行。
  2. 另一种方法是使用f.readline而不是f.readlines(),它将逐行读取文件。首先,初始化一个空列表。如果当前读入的行,在去除空格后为空,则忽略该行并继续读取下一行。否则,将读入的行添加到列表中。

希望这能帮到您!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接