[英]XQuery to API Python String
我正在使用Postman將Xqueries轉換為API的Python字符串。 我現在需要能夠在不使用Postman的情況下將純Xquery字符串轉換為Python中的API字符串。
例如,這是Xquery作為字符串
query_string = "xquery version '1.0-ml'; declare namespace html = 'http://www.w3.org/1999/xhtml'; fn:count(fn:collection('foo'))"
使用郵遞員將其轉換為以下字符串:
"xquery=xquery%20version%20%221.0-ml%22%3B%0Adeclare%20namespace%20html%20%3D%20%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%3B%0Afn%3Acount(fn%3Acollection('foo'))%0A%0A"
我現在需要創建與上述相同的字符串。 如果我嘗試使用urrllib.parse.quote,它將更改括號和'並生成字符串:
urllib.parse.quote(query_string)
'xquery%20version%20%271.0-ml%27%3B%20declare%20namespace%20html%20%3D%20%27http%3A//www.w3.org/1999/xhtml%27%3B%20fn%3Acount%28fn%3Acollection%28%27foo%27%29%29'
還有其他方法來獲得所需的字符串結果以匹配Postman使用普通Python生成的結果嗎?
我不確定問題的表達方式是理想的結果,但是如果您不希望對括號進行編碼(不確定為什么要這樣做,因為它是正確的行為),則可以將safe
參數傳遞給urllib.parse.quote
>>> urllib.parse.quote(query_string, safe='()')
'xquery%20version%20%271.0-ml%27%3B%20declare%20namespace%20html%20%3D%20%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%3B%20fn%3Acount(fn%3Acollection(%27foo%27))'
在使用API之后,我發現它可以正常工作:
payload = 'xquery=' + urllib.parse.quote(query_string, safe="'()")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.