我不熟悉使用bioservices
Python包。现在我将使用它来检索两个引用的PMID,给定指定的信息,这是我尝试过的代码:
from bioservices import EUtils
s = EUtils()
print(s.ECitMatch("pubmed",retmode="xml", bdata="proc+natl+acad+sci+u+s+a|1991|88|3248|mann+bj|Art1|%0Dscience|1987|235|182|palmenberg+ac|Art2|"))
但它发生了一个错误:
"TypeError: ECitMatch() got multiple values for argument 'bdata'".
有人能帮我解决那个问题吗
我认为问题在于您有一个未命名的参数(
pubmed
);如果您查看source code,您可以看到第一个参数应该是bdata
;但是,如果像您这样提供参数,则不清楚bdata
是"pubmed"
还是命名参数bdata
,因此您会得到错误您可以使用以下最简单的示例重现它:
会回来的
如果删除
"pubmed"
,错误将消失,但输出仍不完整:返回
因此,只考虑第一份出版物。您可以使用the correct carriage return character
\r
获得这两种方法的结果:会回来的
我认为您不必指定
retmod
或数据库(pubmed
);如果您查看我上面链接的源代码,您可以看到:所以它似乎总是使用
pubmed
和xml
这里有两个问题:syntaxic和一个bug
正确的语法是:
实际上,与ICitMatch相关的底层服务只有一个数据库(pubmed)和一种格式(xml),因此,这两个参数不可用:有硬编码的。因此,只需要一个参数:您的查询
至于第二个问题,正如上面指出的和报告的on the bioservices issues page,您的查询将只返回一个发布。URL请求无法正确解释特殊字符%0D(代替回车符),这是一个问题。github上的最新版本或pypi网站(如果您使用的是1.7.5版)现在考虑使用此回车符(或\n\r或%0d)
感谢willigot填写生物服务页面上的问题并提请我注意
免责声明:我是《生物服务》的主要作者
相关问题 更多 >
编程相关推荐