Python 如何解决;ECitMatch()为参数';获取了多个值;b数据'&引用;?
我是第一次使用Python 如何解决;ECitMatch()为参数';获取了多个值;b数据'&引用;?,python,bioservices,Python,Bioservices,我是第一次使用bioservicesPython包。现在我将使用它来检索两个引用的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|Art
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()为参数“bdata”获取了多个值
有人能帮我解决这个问题吗?我想问题是你有一个未命名的参数(
publimed
);如果查看,可以看到第一个参数应该是bdata
;但是,如果您像这样提供参数,则不清楚bdata
是“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
和xml
我认为问题在于您有一个未命名的参数(pubmed
);如果查看,可以看到第一个参数应该是bdata
;但是,如果您像这样提供参数,则不清楚bdata
是“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
和xml
两个问题:语法和bug
正确的语法是:
从生物服务导入EUTIL
s=EUtils()
query=“proc+natl+acad+sci+u+s+a | 1991 | 88 | 3248 | mann+bj | Art1 |%0Dscience | 1987 | 235 | 182 | palmenberg+ac | Art2 |”
打印(s.ECitMatch(查询))
实际上,与ICitMatch相关的底层服务只有一个数据库(pubmed)和一种格式(xml),因此,这两个参数不可用:有硬编码的。因此,只需要一个参数:您的查询
至于第二个问题,如上所述,您的查询将只返回一个发布。URL请求无法正确解释特殊字符%0D(代替回车符),这是一个问题。github上的最新版本或pypi网站(如果您使用的是1.7.5版)现在考虑使用此回车符(或\n\r或%0d)
感谢您填写生物服务页面上的问题并引起我的注意
免责声明:我是bioservices的主要作者,这里有两个问题:syntaxic和bug 正确的语法是:
从生物服务导入EUTIL
s=EUtils()
query=“proc+natl+acad+sci+u+s+a | 1991 | 88 | 3248 | mann+bj | Art1 |%0Dscience | 1987 | 235 | 182 | palmenberg+ac | Art2 |”
打印(s.ECitMatch(查询))
实际上,与ICitMatch相关的底层服务只有一个数据库(pubmed)和一种格式(xml),因此,这两个参数不可用:有硬编码的。因此,只需要一个参数:您的查询
至于第二个问题,如上所述,您的查询将只返回一个发布。URL请求无法正确解释特殊字符%0D(代替回车符),这是一个问题。github上的最新版本或pypi网站(如果您使用的是1.7.5版)现在考虑使用此回车符(或\n\r或%0d)
感谢您填写生物服务页面上的问题并引起我的注意
免责声明:我是《生物服务》的主要作者