我认为问题在于您有一个未命名的参数(pubmed
);如果您查看源代码,您可以看到第一个参数应该是bdata
;但是,如果您像您一样提供参数,则不清楚bdata
is"pubmed"
或命名参数bdata
,因此您获得的错误。
你可以用这个最小的例子来重现它:
def dummy(a, b):
return a, b
dummy(10, a=3)
将返回
TypeError: dummy() 为参数 'a' 获得了多个值
如果您删除"pubmed"
,错误就会消失,但是,输出仍然不完整:
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|"))
返回
'proc+natl+acad+sci+u+s+a|1991|88|3248|mann+bj|Art1|2014248\n'
所以只考虑第一个出版物。您可以通过使用正确的回车符 来获得两者的结果\r
:
print(s.ECitMatch(bdata="proc+natl+acad+sci+u+s+a|1991|88|3248|mann+bj|Art1|\rscience|1987|235|182|palmenberg+ac|Art2|"))
将返回
proc+natl+acad+sci+u+s+a|1991|88|3248|mann+bj|Art1|2014248
science|1987|235|182|palmenberg+ac|Art2|3026048
我认为您既不必指定retmod
也不必指定数据库(pubmed
);如果您查看我上面链接的源代码,您可以看到:
query = "ecitmatch.cgi?db=pubmed&retmode=xml"
所以似乎它总是使用pubmed
and xml
。