首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决"ECitMatch()获得参数‘bdata’的多个值“?

如何解决"ECitMatch()获得参数‘bdata’的多个值“?
EN

Stack Overflow用户
提问于 2020-05-05 18:40:21
回答 2查看 65关注 0票数 1

我刚开始使用bioservices软件包。现在,我将使用它检索两个引用的PMID,给定指定的信息,这是我尝试过的代码:

代码语言:javascript
复制
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()获得参数‘bdata’的多个值“。

有人能帮我解决那个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-04 20:46:42

我认为问题在于,您有一个未命名的参数(pubmed);如果您查看源代码,可以看到第一个参数应该是bdata;如果像您那样提供参数,那么不清楚bdata"pubmed"还是命名的参数bdata,因此您得到的错误。

您可以用这个最小的例子来再现它:

代码语言:javascript
复制
def dummy(a, b): 
   return a, b

dummy(10, a=3)

会回来

TypeError: dummy()获得参数'a‘的多个值

但是,如果删除"pubmed",错误将消失,但输出仍然不完整:

代码语言:javascript
复制
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|"))

返回

代码语言:javascript
复制
'proc+natl+acad+sci+u+s+a|1991|88|3248|mann+bj|Art1|2014248\n'

因此,只考虑到第一份出版物。您可以使用正确的回车字符 \r获得两者的结果。

代码语言:javascript
复制
print(s.ECitMatch(bdata="proc+natl+acad+sci+u+s+a|1991|88|3248|mann+bj|Art1|\rscience|1987|235|182|palmenberg+ac|Art2|"))

会回来

代码语言:javascript
复制
proc+natl+acad+sci+u+s+a|1991|88|3248|mann+bj|Art1|2014248
science|1987|235|182|palmenberg+ac|Art2|3026048

我认为您不必指定retmod或数据库(pubmed);如果您查看我上面链接的源代码,您可以看到:

代码语言:javascript
复制
query = "ecitmatch.cgi?db=pubmed&retmode=xml"

因此,它似乎总是使用pubmedxml

票数 0
EN

Stack Overflow用户

发布于 2020-06-15 11:24:00

这里有两个问题:语法和bug。

正确的语法是:

代码语言:javascript
复制
    from bioservices import EUtils
    s = EUtils()
    query = "proc+natl+acad+sci+u+s+a|1991|88|3248|mann+bj|Art1|%0Dscience|1987|235|182|palmenberg+ac|Art2|"
    print(s.ECitMatch(query))

实际上,与ICitMatch相关的底层服务只有一个数据库(pubmed)和一种格式(xml),因此这两个参数不可用:存在硬编码。因此,只需要一个参数:查询。

至于第二个问题,正如上面所指出的并报告了在生物服务问题页上,您的查询将只返回一个发布。这是一个特殊字符%0D (代替回车)没有被URL请求正确解释的问题。这个运输字符( \n,\r或%0d)现在在github上的最新版本中考虑到,如果您使用版本1.7.5,则从pypi网站考虑。

感谢威利戈特在“生物服务”页面上填充了这个问题,并提请我注意。

免责声明:我是“生物服务”的主要作者

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61620551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档