<p>我认为问题在于您有一个未命名的参数(<code>pubmed</code>);如果您查看<a href="https://bioservices.readthedocs.io/en/master/_modules/bioservices/eutils.html#EUtils.ECitMatch" rel="nofollow noreferrer">source code</a>,您可以看到第一个参数应该是<code>bdata</code>;但是,如果像您这样提供参数,则不清楚<code>bdata</code>是<code>"pubmed"</code>还是命名参数<code>bdata</code>,因此您会得到错误</p>
<p>您可以使用以下最简单的示例重现它:</p>
<pre><code>def dummy(a, b):
return a, b
dummy(10, a=3)
</code></pre>
<p>会回来的</p>
<blockquote>
<p>TypeError: dummy() got multiple values for argument 'a'</p>
</blockquote>
<p>如果删除<code>"pubmed"</code>,错误将消失,但输出仍不完整:</p>
<pre><code>from bioservices import EUtils
s = EUtils()
print(s.ECitMatch("proc+natl+acad+sci+u+s+a|1991|88|3248|mann+bj|Art1|%0Dscience|1987|235|182|palmenberg+ac|Art2|"))
</code></pre>
<p>返回</p>
<pre><code>'proc+natl+acad+sci+u+s+a|1991|88|3248|mann+bj|Art1|2014248\n'
</code></pre>
<p>因此,只考虑第一份出版物。您可以使用<a href="https://stackoverflow.com/a/3098328/1534017">the correct carriage return character</a><code>\r</code>获得这两种方法的结果:</p>
<pre><code>print(s.ECitMatch(bdata="proc+natl+acad+sci+u+s+a|1991|88|3248|mann+bj|Art1|\rscience|1987|235|182|palmenberg+ac|Art2|"))
</code></pre>
<p>会回来的</p>
<pre><code>proc+natl+acad+sci+u+s+a|1991|88|3248|mann+bj|Art1|2014248
science|1987|235|182|palmenberg+ac|Art2|3026048
</code></pre>
<p>我认为您不必指定<code>retmod</code>或数据库(<code>pubmed</code>);如果您查看我上面链接的源代码,您可以看到:</p>
<pre><code>query = "ecitmatch.cgi?db=pubmed&retmode=xml"
</code></pre>
<p>所以它似乎总是使用<code>pubmed</code>和<code>xml</code></p>