Legit python if语句?

时间:2011-04-26 13:52:55

标签: python

我是Python新手并尝试构建一个读取XML的练习项目。由于某种原因,即使对于空白空行也会触发此if语句:

if '<' and '>' in line:

任何想法为什么?

4 个答案:

答案 0 :(得分:9)

你可能想要:

if ('<' in line) and ('>' in line):

您的版本被解释为:

if ('<') and ('>' in line):

这可能不是你的意思。

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

答案 1 :(得分:9)

你的代码说(为清晰起见):

if '<' and ('>' in line):

评估为:

if True and ('>' in line):

当您不打算时,在您的情况下评估为true。所以,试试这个(括号是可选的,但为了清楚起见而添加):

if ('<' in line) and ('>' in line):

答案 2 :(得分:3)

当您在文件中出现空白行时,line真的是空的,您有多确定?

当你写'<' and '>' in line时,口译员认为'<' and ('>' in line)不是你想要的:你正在追求更像'<' in line and '>' in lineall(x in line for x in '<>')的东西。但是,当line为空时,这些表达式(包括原始表达式)都不会成立。表达式的错误形式但是,当字符串仅包含'>'时,会给出错误的答案。

>>> '<' and '>' in ''
False
>>> '<' and '>' in '<'
False
>>> '<' and '>' in '>' # Huh?
True
>>> 1 and 0 in [0]  # Perhaps this will clarify matters
True

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

答案 3 :(得分:2)

尝试:
if '<' in line and '>' in line:

我建议在潜入之前阅读一本关于Python的书,你会避免很多的陷阱:)