python SPARQL查询结果绑定:关于绑定值的IF语句?
将Python与SPARQLWrapper、JSON、urlib2和cgi结合使用。在将带有一些空值的SPARQL查询传递给python时遇到问题,因此我用一个文本填充了空格,并将尝试在输出处进行过滤。我有以下结果部分示例:python SPARQL查询结果绑定:关于绑定值的IF语句?,python,sparql,Python,Sparql,将Python与SPARQLWrapper、JSON、urlib2和cgi结合使用。在将带有一些空值的SPARQL查询传递给python时遇到问题,因此我用一个文本填充了空格,并将尝试在输出处进行过滤。我有以下结果部分示例: for result in results["results"]["bindings"]: project = result["project"]["value"].encode('utf-8') filename = result[
for result in results["results"]["bindings"]:
project = result["project"]["value"].encode('utf-8')
filename = result["filename"]["value"].encode('utf-8')
url = result["url"]["value"].encode('utf-8')
…然后我打印
%s
。是否有方法过滤值,即如果值为“字符串”,则打印?还是有其他解决办法?我正处于一个小项目的末尾,我知道我需要一个更好的包装器,我只需要在继续之前过滤这些结果。我是SPARQLWrapper库的开发人员之一,问题是
关于原始查询中的optionals值,结果集将不包含这些变量的值。问题是我们需要解析查询来填充这些缺失的条目,并且我们希望避免这种解析;因此,您需要检查它以避免KeyError的运行时问题
通常我使用的代码如下:
for result in results["results"]["bindings"]:
party = result["party"]["value"] if ("party" in result) else None
这些空值来自SPARQL中的可选子句吗?是的,空值来自我的SPARQL中的可选子句。抱歉,响应延迟,一定没有收到通知。我与SPARQLWrapper开发人员进行了检查,并收到了一个解决方案:“对于结果[“结果”][“绑定”]:if result.has_key(“party”):print“*”+结果[“person”][“value”]+“**”+结果[“party”][“value”]否则:print result[“person”][“value”]”。我需要以某种方式巧妙地使用%s…你打算提出不同的解决方案吗?不,不太可能。这似乎是正确的解决方案。