python - 为什么 line != "\n"或 line != "\r\n"或 line ! ="\r"无法过滤空行?

标签 python string python-3.x if-statement blank-line

空白行仅包含\n\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)

为什么空行还能打印?

最佳答案

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 字符,然后检查是否还有任何内容。)

关于python - 为什么 line != "\n"或 line != "\r\n"或 line ! ="\r"无法过滤空行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52231791/

相关文章:

c - 如何将字符常量连接成字符串。 C

Python: 'NoneType' 对象不可下标'错误

python-3.x - 与协程的双向通信(asyncio 中的状态机)

python - 如何从 Path 切换到 os.path,反之亦然?

Python 对文件夹中的文件进行操作 - 'for file in folder'

Python:如何获取登录用户的域\用户名

c - 如何多次打印一个字符串而仅引用它一次?

.net - 在 Windows Powershell(或 dotNet 又名 .net)中执行 textwrap 和 dedent

python - 安装 functools 给我 AttributeError 'module' object has no attribute 'compose'

java - 如何使用 stanford-nlp 提供的 OpenIEDemo.java 生成自定义三元组