python SPARQL查询结果绑定:对绑定值的IF语句?

2 投票
1 回答
844 浏览
提问于 2025-04-17 02:35

我在用Python配合SPARQLWrapper、JSON、urlib2和cgi的时候,遇到了一些问题。我需要把一个包含NULL值的SPARQL查询传给Python,但这个查询有些地方是空的,所以我用一个固定的值填上了这些空白,打算在输出的时候再进行过滤。下面是我结果部分的一个例子:

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。请问有没有办法过滤某个值,比如说,如果值不是“字符串”,那就打印出来?或者有没有其他的解决办法?我这个小项目快做完了,我知道我需要一个更好的封装,只是想在继续之前先把这些结果过滤掉。非常感谢大家的帮助...

1 个回答

2

我是SPARQLWrapper库的开发者之一,这个问题在邮件列表上已经回答过了

关于原始查询中的可选值,结果集会显示这些变量没有值。问题在于,我们需要解析查询来填补这些缺失的条目,但我们想避免这种解析;所以你需要检查一下,以免在运行时出现KeyError的问题。

通常我会使用这样的代码:

for result in results["results"]["bindings"]:
    party = result["party"]["value"] if ("party" in result) else None

撰写回答