![](/img/trans.png)
[英]Why does python use unconventional triple-quotation marks for comments?
[英]How to insert a variable in a SPARQL query with triple-quotation (""") in SPARQLWrapper (Jupyter notebook)
关于在 Wrapper 库的 SPARQL 查询中插入变量的非常简单的问题。 下面的示例在 Jupyter 笔记本中,我在 SPARQL 查询之外定义了一个变量'q'
,并希望在 SPARQL 查询中使用它。 我找不到如何逃避三引号( """
)。快速帮助将不胜感激。非常感谢!
!pip install SPARQLWrapper
from SPARQLWrapper import SPARQLWrapper, JSON, XML
q = '<http://data.europeana.eu/item/08517/3395FCFC5812F76279634269BE601072BF09183B>'
query_content = """
select *
where {
?providerProxy ore:proxyFor 'q' ; ?p ?o
}
"""
query = prefix + query_content
sparql.setQuery(query)
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
print(results)
print('------')
for result in results["results"]["bindings"]:
p = result["p"]["value"]
o = result["o"]["value"]
print(p + " : " + o)
不知何故,以下方法(.format)不起作用。
query_content = """
select ?providerProxy
where {
?providerProxy ore:proxyFor {var}
}
LIMIT 100
""".format(var = '<http://data.europeana.eu/item/08517/3395FCFC5812F76279634269BE601072BF09183B>')
query = prefix + query_content
sparql.setQuery(query)
sparql.setReturnFormat(JSON)
错误看起来像:
HTTPError Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/SPARQLWrapper/Wrapper.py in _query(self)
925 else:
--> 926 response = urlopener(request)
927 return response, self.returnFormat
HTTPError: HTTP Error 400: Bad Request
During handling of the above exception, another exception occurred:
QueryBadFormed Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/SPARQLWrapper/Wrapper.py in _query(self)
928 except urllib.error.HTTPError as e:
929 if e.code == 400:
--> 930 raise QueryBadFormed(e.read())
931 elif e.code == 404:
932 raise EndPointNotFound(e.read())
QueryBadFormed: QueryBadFormed: A bad request has been sent to the endpoint: probably the SPARQL query is badly formed.
results = sparql.query().convert()
print(results)
print('------')
同样, f""" {} """ 方法不起作用:
var = '<http://data.europeana.eu/item/08517/3395FCFC5812F76279634269BE601072BF09183B>'
query_content = f"""
select ?providerProxy
where {
?providerProxy ore:proxyFor {var}
LIMIT 100
"""
返回错误:
File "<fstring>", line 2
?providerProxy ore)
^
SyntaxError: invalid syntax
query_content = f""" select ?providerProxy where {{ ?providerProxy ore:proxyFor {var} }} """
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.