合法的python if语句?

合法的python if语句?,python,Python,我是Python新手,正在尝试构建一个可以读取一些XML的实践项目。出于某些原因,即使对于空白空白行也会触发此if语句: if '<' and '>' in line: 如果行中有“”: 你知道为什么吗?你可能想要: if ('<' in line) and ('>' in line): 如果(“”在行中): 您的版本被解释为: if ('<') and ('>' in line): 如果(“”在行中): 这可能不是你的意思 使用括号使事情变得非常

我是Python新手,正在尝试构建一个可以读取一些XML的实践项目。出于某些原因,即使对于空白空白行也会触发此if语句:

if '<' and '>' in line:
如果行中有“”:
你知道为什么吗?

你可能想要:

if ('<' in line) and ('>' in line):
如果(“”在行中):
您的版本被解释为:

if ('<') and ('>' in line):
如果(“”在行中):
这可能不是你的意思

使用括号使事情变得非常明显。

您的代码说(为了清晰起见进行了删节):

在您的情况下,当您不打算这样做时,其计算结果为
true
。因此,请尝试以下方法(括号是可选的,但为了清晰起见添加了):

如果(“”在行中):
试试看:
如果行中有“”:


我建议在开始之前先读一本关于Python的书,这样可以避免很多陷阱:)

当你在文件中点击一个空行时,你有多确定
行是否真的是空的

当您在第行中编写
'
时,解释器会将其视为
'(第行)
这不是您想要的:您要的是更像第行中的
'
all(第x行中的x表示第x行中的x)
。但是,当
line
为空时,这些表达式(包括原始表达式)都不会为真。但是,当字符串仅包含
'>'
时,表达式的不正确形式将给出不正确的答案

>>> '<' and '>' in ''
False
>>> '<' and '>' in '<'
False
>>> '<' and '>' in '>' # Huh?
True
>>> 1 and 0 in [0]  # Perhaps this will clarify matters
True
“”中的“
>>>”
假的
>>>“在”#嗯?
真的
>>>[0]中的1和0可能会澄清问题
真的

无论如何,不要手动解析XML-使用XML解析库,例如标准库中包含的
XML.etree.ElementTree
模块。

如果为true,则
如何处理?(“>”行):
始终为true?如果它使用了
,我可以看到它。您是否真的尝试在交互式提示下键入这些内容?在这种情况下,
中的
的相对优先级在没有括号的情况下是正确的,“
中的
True并不总是返回
True
,它会引发
类型错误
@ncoghlan:是的,实际上(PS,我再次修复了参数)。有趣的问题是,为什么它会根据OP在空行上求值为True?“correct”是错误的单词(因为表达式没有正确地表示OP的意图),但这两个运算符的相对优先级如原始(预编辑)中所述答案和佩恩当前的答案。请看我的答案-如果OP在明显的空行上看到该条件触发,则会发生其他情况(我猜是
行中的过时数据,但我们目前没有足够的信息)。既然你纠正了帕伦夫妇,我就取消了否决票:)你为什么写这个声明?你在哪里见过这样的代码?你认为这应该做什么?这是准确的,但不能解释OP的问题(即,如果
line=''
OP的表达式仍然应该返回
False
,尽管它们有错误)。
if True and ('>' in line):
if ('<' in line) and ('>' in line):
>>> '<' and '>' in ''
False
>>> '<' and '>' in '<'
False
>>> '<' and '>' in '>' # Huh?
True
>>> 1 and 0 in [0]  # Perhaps this will clarify matters
True