python - 为什么 line != "\n" or line != "\r\n" or line !="\r" 不能过滤空行?
问题描述
空行仅包含\n
or\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 字符,然后检查是否还有任何内容。)
推荐阅读
- javascript - 悬停时的高效 JS 事件监听器
- c - 如果在块中引用了具有内部链接的变量,我是否需要在该块中使用 extern 关键字?
- python - 用 scapy 关闭 pcap 文件
- php - 我正在尝试使用“干预\图像库”保存图像。我发现一个错误图像源不可读
- python - 如何使用 tkinter for python 使用自定义字体打印 list = ['a','b','c']
- visual-studio-2019 - 在 Visual Studio 2019 中发布不工作
- flutter - FutureBuilder:Flutter中的RangeError(RangeError(索引):无效值:有效值范围为空:0)
- apache-spark - Greenplum-Spark 连接器生成太多外部表
- python - pandas在一列中找到相似的行,根据条件新建一列
- omnet++ - windows操作系统配置Omnet++的问题