【问题标题】:Why line != "\n" or line != "\r\n" or line !="\r" can't filte blank line?为什么 line != "\n" or line != "\r\n" or line !="\r" 不能过滤空行?
【发布时间】:2018-09-08 03:44:48
【问题描述】:

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

为什么还能打印空行?

【问题讨论】:

  • 尝试打印它的 repr 看看到底是什么线......然后过滤掉它。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 2019-12-30
    • 2016-12-03
    相关资源
    最近更新 更多