首页 > 解决方案 > 为什么 line != "\n" or line != "\r\n" or line !="\r" 不能过滤空行?

问题描述

空行仅包含\nor\r\n\r

tempfile = open(file,"r")
for id,line in  enumerate(tempfile):
    if(line != "\n" or line != "\r\n" or line !="\r"):
        print(id,line)

为什么空行还能打印?

标签: pythonstringpython-3.xif-statementblank-line

解决方案


if(line != "\n" or line != "\r\n" or line !="\r"):

应该读

if line != "\n" and line != "\r\n" and line !="\r":

即使用and而不是or. (我还删除了括号,因为 Python 不需要它们。)

相同的表达式可以写成更惯用的方式,如下所示:

if line not in {"\n", "\r\n", "\r"}:

或者甚至:

if line.rstrip("\r\n"):

(这会删除所有尾随 CR 和 LF 字符,然后检查是否还有任何内容。)


推荐阅读