我有一个字符串,我想把一个变量放在多个地方:
query_1 ='SELECT distinct ?a\
WHERE { ?a rno:end_at ?b.\
?b rdf:type rno:Node; rno:is_extent_of ?x.\
?x rno:builds %s. %s a rno:Roundabout.\
FILTER(NOT EXISTS {?a rno:builds %s})} ORDER BY ?a'%(ref_RaURI, ref_RaURI,ref_RaURI)
print query_1
上面的替换工作正常,但我不想重复变量ref\u RaURI,因此我尝试了以下方法:
query_1 ='SELECT distinct ?a\
WHERE { ?a rno:end_at ?b.\
?b rdf:type rno:Node; rno:is_extent_of ?x.\
?x rno:builds {0}. {0} a rno:Roundabout.\
FILTER(NOT EXISTS {?a rno:builds {0}})} ORDER BY ?a'.format(ref_RaURI)
print query_1
这个人回来了:
FILTER(NOT EXISTS {?a rno:builds {0}})} ORDER BY ?a'.format(ref_RaURI)
KeyError: ' ?a rno'
使用字典:
query_1 ="SELECT distinct ?a\
WHERE { ?a rno:end_at ?b.\
?b rdf:type rno:Node; rno:is_extent_of ?x.\
?x rno:builds %(s). %(s) a rno:Roundabout.\
FILTER(NOT EXISTS {?a rno:builds %(s)})} ORDER BY ?a"%{'s':ref_RaURI}
print query_1
退货:
FILTER(NOT EXISTS {?a rno:builds %(s)})} ORDER BY ?a"%{'s':ref_RaURI}
ValueError: unsupported format character ' ' (0x20) at index 140
有什么办法让它起作用吗?你知道吗
另外,当使用
%
符号进行字符串格式设置时,可以指定如下关键字参数(取自您的示例):字符串格式运算符
%
有多个选项。最常见的情况是将其用作%s
。WIt只插入变量的字符串表示形式。还有其他选项,比如%c
-字符、%d
-数字等等。 除此之外,它还支持关键字参数。这意味着,当您将dictionary作为格式化源传递时,可以为%
操作符指定给定dict的键,如下所示:%(one)s
意思是:通过键one
从dict中获取值,并放入其字符串表示形式(%s
)。相同的规则适用于所有参数。如果您只想使用%(one)
,这将不起作用,因为您需要提供type,在这个%s
中,type代表字符串。你知道吗尽管有关于SQLInjection的注释,但在一般情况下,您可以使用命名参数来
string.format()
如下所示:也可以在不同的位置使用不同的格式:
相关问题 更多 >
编程相关推荐