2015-08-17 144 views
0

值我有這樣一個URL如下 -蟒蛇 - 替換URL

url = "http://servername:8080/api/environment/component.get?query=(name LIKE '%componentname%')" 

我想替換參數參數以下值我的琴絃 -

servername 
environment 
component 
componentname 

我想它,然後傳入請求 -

r = requests.get(url, auth=('domain\user', 'password') 

問題是我無法弄清楚如何替換值。我無法執行%s,%d,因爲%componentname%中的值可能以s或d開頭,這會破壞編碼。

+2

使用string.format與{}來轉義。你甚至可以使用{0} {1}等避免意外逃脫 –

+0

我其實做,然後做url.replace('','服務器') 似乎效率低,但必須有4個單獨的url.replace。 .. – whoisearth

+0

你可能想看看['uritemplate'](https://pypi.python.org/pypi/uritemplate)包。 –

回答

1

據我瞭解以下解決方案應該爲你工作,這是更直接的(這是在通過用戶添Castelijns第一評論也sugested):如果你想要更多的可讀性你可以

url = "http://{0}:8080/api/{1}/{2}.get?query=(name LIKE '%{3}%')".format(servername, environment, component, componentname) 

即使這樣做:

url = "http://{servername}:8080/api/{environment}/{component}.get?query=(name LIKE '%{componentname}%')".format(servername, environment, component, componentname) 
0

你可以使用python的內置字符串連接。

url = "http://servername:8080/api/environment/component.get?query=(name LIKE '"+ componentname +"')" 

它會以原樣追加數字或字符串,而且您不需要照顧%s或%d。

+0

我試過所有的替代品,它不喜歡它,因爲內部的''和外部「」 – whoisearth

+0

你能否澄清。你總是可以逃避內部報價。 –

+0

@whoisearth只是使用''''和'''然後它們在python中很好地混合使用例子''這是'一個字符串''是有效'的 –