擅长:python、mysql、java
<p>看看本教程的第8.3节,似乎有一个函数可以让您搜索术语并获得相应的id(我对这个库一无所知,对生物学更不了解,因此这可能完全错误:))。在</p>
<pre><code>>>> handle = Entrez.esearch(db="nucleotide",term="Cypripedioideae[Orgn] AND matK[Gene]")
>>> record = Entrez.read(handle)
>>> record["Count"]
'25'
>>> record["IdList"]
['126789333', '37222967', '37222966', '37222965', ..., '61585492']
</code></pre>
<p>据我所知,<code>id</code>指的是<code>esearch</code>函数(在响应的<code>IdList</code>属性中)返回的实际ID号。但是,如果使用<code>term</code>关键字,则可以运行搜索并获取匹配项的ID。完全未测试,但假设搜索支持布尔运算符(看起来<code>AND</code>有效),您可以尝试使用如下查询:</p>
^{pr2}$
<p>要生成要插入的术语,可以执行以下操作:</p>
<pre><code>In [1]: l = ['ITGB1', 'RELA', 'NFKBIA']
In [2]: ' OR '.join('%s[Gene]' % i for i in l)
Out[2]: 'ITGB1[Gene] OR RELA[Gene] OR NFKBIA[Gene]'
</code></pre>
<p>然后,<code>record["IdList"]</code>可以转换为逗号分隔的字符串,并通过如下方法传递给原始查询中的<code>id</code>参数:</p>
<pre><code>In [3]: r = ['1234', '5678', '91011']
In [4]: ids = ','.join(r)
In [5]: ids
Out[5]: '1234,5678,91011'
</code></pre>