在python中使用if或if条件的正确方法是什么?

时间:2017-05-11 05:47:46

标签: python

我已经写下了一段代码来获取科学文献,给出代码以获取“xml”文件并从大文件中提取所需的数据或行。

从这个文件我想要打印两行包含标签“AbstractText”或“Title”,当我使用“AbstractText”或“Title”和“if”时它打印出理想的输出但当我同时使用两者时带有“或”语句代码的标签开始打印所有行。

未正确运行的代码:

<?php

namespace App\Cart\Providers;

use App;
use Illuminate\Support\ServiceProvider;

class CartServiceProvider extends ServiceProvider
{
    /**
     * Register the service provider.
     * @return void
     */
    public function register()
    {
        App::bind('App\Cart\Interfaces\CartServiceInterface', function () {
            return new \App\Cart\Services\CartService(app('cart'));
        });

    }
}

代码使用“AbstractText”标记正确运行:

  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")

代码使用“标题”标记正确运行:

  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")

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

您应该将in line用于两者:

if  "<AbstractText>" in line or "<Title>" in line:

你现在的方式有两个以下条件:

"<AbstractText>" or
"<Title>" in line

"<AbstractText>"始终为true,因为string "<AbstractText>"包含某些内容(if "nonemptystring"始终为true)。这就是你打印所有内容的原因。

答案 1 :(得分:0)

一种正确的方法是写:

if "<AbstractText>" in line or "<Title>" in line:

您的第一次尝试相当于if ("<AbstractText>") or ("<Title>" in line):。我添加了括号来强调如何解释这条线。

答案 2 :(得分:0)

而不是

if  "<AbstractText>" or "<Title>" in line:

使用

if  "<AbstractText>" in line or "<Title>" in line:

答案 3 :(得分:0)

编辑:修正了语法错误 试试这样:

def fetch_abstract(pmid):
    handle = efetch(db='pubmed', id=pmid, retmode='xml')
    lines = handle.readlines()

    for line in lines:
        if  "<AbstractText>" in line or "<Title>" in line:
            print line,

fetch_abstract("19555725")