我是Python新手并尝试构建一个读取XML的练习项目。由于某种原因,即使对于空白空行也会触发此if语句:
if '<' and '>' in line:
任何想法为什么?
答案 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 line
或all(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的书,你会避免很多的陷阱:)