Python:在if语句中使用'或'会导致代码执行,即使条件不满足也是如此

Mic*_*yer -1 python if-statement

我正在编写一个解析器,其中两行被比较在一起(可以说是'mainline'和它之前的行).如果这两条线都匹配,则主线被丢弃.我只希望这发生在仅包含换行符或回车换行符的行上.所以我有这个代码

lastline = 0
pointer = 0
for lines in fileLines:
    mainline = fileLines[pointer]
    if lastline != 0:
        print "Last Line: ",lastline
        print "This Line: ",mainline
        if lastline == '\n' or '\r\n':
            if mainline == '\n' or '\r\n':
                print "Would drop"
    lastline = mainline
    pointer = pointer + 1
Run Code Online (Sandbox Code Playgroud)

它每次通过for循环时都会打印"会掉线",当字符串肯定不是这四个选项中的任何一个时.我想我正在做一些完全倒退的事情,但我正在教自己蟒蛇,所以当我出错的时候,我真的没有人告诉我.感谢上帝,你们都在这里.任何想法为什么会这样?

感谢您的帮助,它完美无缺.谢谢!!!

phi*_*hag 6

lastline == '\n' or '\r\n'
Run Code Online (Sandbox Code Playgroud)

是相同的

(lastline == '\n') or ('\r\n')
(lastline == '\n') or bool('\r\n')
(lastline == '\n') or True 
True
Run Code Online (Sandbox Code Playgroud)

你也想要

if lastline in ('\n', '\r\n'):
Run Code Online (Sandbox Code Playgroud)

要么

if lastline == '\n' or lastline == '\r\n':
Run Code Online (Sandbox Code Playgroud)

  • 无法编辑,但你不是说`if lastline =='\n'或...`而不是`if lastline in =='\n'`在最后一个例子中? (2认同)