2016-06-15 30 views
0

我正在使用Python 3。在API調用中遇到的「ValueError:Single'}'格式字符串中遇到的問題」

基本上,我使用的urllib而得到錯誤作出API調用:

「ValueError異常:單‘}’在格式字符串中遇到」

我已經看過了各種其他解決方案,但他們似乎並沒有工作。

基本上就是我做的是:因爲它需要一個API密鑰(顯然中省略),以及需要是經過驗證的網絡上

import urllib.request 
import urllib.parse 

def query_person(first, last): 
    person_request = urllib.request.urlopen('http://api.querysite.com/content/search/index:AUTHOR?query=authlast%28%27{last}}%27%29%20AND%20authfirst%28%27{first}}%27%29&'.format(first=first,last=last)) 
    return(person_request) 

print(query_person("John", "Doe")) 

實際API將無法再生。

我認爲這個問題與「{last}}%27%29%20AND%20authfirst%28%27 {first}}」有一個額外的括號。例如,如果我想只查詢它沒有Python或.format()我的地址欄,它看起來像:

http://api.querysite.com/content/search/index:AUTHOR?query=authlast%28%27Doe}%27%29%20AND%20authfirst%28%27John}%27%29& 

或者更具體地說:母鹿}%27%29%20於是%20authfirst% 28%27John}%27%29 &

如果我在python中使用後一種方法,我沒有問題,但它不允許我輸入名稱來查詢當然。

回答

2

你需要的,如果你想讓它留在字符串中對您的單一捆翻倍:

例如:

'{first}}}'.format(first='John') == 'John}' 

你的情況:

person_request = urllib.request.urlopen('http://api.querysite.com/content/search/index:AUTHOR?query=authlast%28%27{last}}}%27%29%20AND%20authfirst%28%27{first}}}%27%29&'.format(first=first,last=last)) 
+0

很抱歉,您是正確的。這是我的想法,不知道爲什麼即使我這樣做,我也得到一個錯誤。原來我每次都意外添加了一個額外的支架(我最近將IDE轉換爲Sublime Text 3)。一旦它允許或刪除這個,如果有人投票給我:( – Sean