我写了一个代码来获取科学文献,给出了下面的代码来获取"xml“文件,并从大文件中提取所需的数据或行。
在这个文件中,我希望打印包含标签"AbstractText“或"Title”的两行代码,当我将"AbstractText“或"Title”与"if“一起使用时,它会打印所需的输出,但当我将这两个标签与”或“一起使用时,语句代码将开始打印所有行。
未正确运行的代码:
def fetch_abstract(pmid):
handle = efetch(db='pubmed', id=pmid, retmode='xml')
lines = handle.readlines()
for line in lines:
if "<AbstractText>" or "<Title>" in line:
print line,
fetch_abstract("19555725")
带有"AbstractText“标签的代码运行正常:
def fetch_abstract(pmid):
handle = efetch(db='pubmed', id=pmid, retmode='xml')
lines = handle.readlines()
for line in lines:
if "<AbstractText>" in line:
print line,
fetch_abstract("19555725")
带有"Title“标签的代码运行正常:
def fetch_abstract(pmid):
handle = efetch(db='pubmed', id=pmid, retmode='xml')
lines = handle.readlines()
for line in lines:
if "<Title>" in line:
print line,
fetch_abstract("19555725")
如何解决这个问题?
发布于 2017-05-11 05:50:13
你应该把你的条件和in line
放在一起:
if "<AbstractText>" in line or "<Title>" in line:
你现在的方式有两个条件:
"<AbstractText>" or
"<Title>" in line
"<AbstractText>"
总是true
,因为string
"<AbstractText>"
包含一些东西(if "nonemptystring"
总是true
)。这就是为什么要打印所有内容的原因。
发布于 2017-05-11 05:49:43
一种正确的方法是这样写:
if "<AbstractText>" in line or "<Title>" in line:
您的第一次尝试等同于if ("<AbstractText>") or ("<Title>" in line):
。我添加括号是为了强调这行是如何解释的。
发布于 2017-05-11 05:50:13
而不是
if "<AbstractText>" or "<Title>" in line:
使用
if "<AbstractText>" in line or "<Title>" in line:
https://stackoverflow.com/questions/43907459
复制相似问题