2014-10-03 105 views
-1

在Python中確保將尾隨字符作爲字符串包含在Python中的最佳方法是什麼?確保在Python中包含尾隨字符作爲字符串

一個示例:用戶在腳本中提供的URL需要用於構建URL,因此我們希望確保URL中包含尾部斜線,否則我們自己添加一個斜槓。

因此,給定字符串http://www.so.comhttp://www.so.com/,確保最終以http://www.so.com/結尾的最佳方法是什麼?

我的解決方案使用re模塊,但由於我仍在學習Python,因此我想知道是否有更好的方法來解決此問題。

>>> import re 
>>> url = "http://www.so.com" 
>>> re.sub('//$', '/', re.sub('$', '/', url)) 
'http://www.so.com/' 
>>> url = "http://www.so.com/" 
>>> re.sub('//$', '/', re.sub('$', '/', url)) 
'http://www.so.com/' 

UPDATE

我要澄清,我正在尋找一個純粹的Python的解決方案,而無需使用任何額外的模塊。只是學習Python技巧和最佳實踐的一部分。

+0

代替操縱手工路徑,我會使用'urllib.parse'這種事情。那麼你不必擔心後面的'/''。您可以使用['urllib.parse.urljoin'](https://docs.python.org/3/library/urllib.parse.html#urllib.parse.urljoin)構建URL。 – CoryKramer 2014-10-03 22:06:07

+0

的確,我可以使用urljoin模塊,這只是我試圖解決的問題的一個例子。 – bbbco 2014-10-03 22:07:32

+0

[您只應根據您遇到的實際問題提出實際的,可回答的問題。](http://stackoverflow.com/help/dont-ask)此處強烈建議不要使用「最佳實踐」問題。 – Air 2014-10-03 22:13:41

回答

2

,您可以訪問到一個字符串的結尾與[-1]指數:

>>> url = "http://www.so.com" 
>>> if url[-1]!='/': 
... url+='/' 
... 
>>> url 
'http://www.so.com/' 
+0

感謝您純粹的Python答案! – bbbco 2014-10-05 00:40:13

+0

歡迎您! ;) – Kasramvd 2014-10-05 06:48:46

2

對於這樣的應用程序,你應該使用urllib.parse.urljoinurlparse.urljoin在Python 2)無需手動管理slashs。

from urllib.parse import urljoin 
url_base = "http://www.so.com" 
add = "foo/bar" 

print(urljoin(url_base, add)) 
# http://www.so.com/foo/bar 

對於文件路徑,os.path.join是一個類似的功能。

1

對於難以讀取的一行,你可以這樣做:

url = "http://www.so.com" 
url += ['/', ''][(url or '')[-1] == '/'] 

(url or '') - 這部分的URL設置爲默認的字符串,如果它是假的,空,空單等。 ..

[(url or '')[-1] == '/'] - 這部分是索引查找,如果url不以字符串結尾,則該值應該爲0,如果是,則爲1

['/', ''] - 基於前面提到的索引查找的值,我們將追加斜線或一個空字符串的url

+0

不,我不認爲這是答案。我只是想爲一個非常廣泛的問題添加一些有趣的批判性思維 – 2014-10-03 22:15:38

1
re.sub('/?$', '/', url) 

實施例中的端部:

>>> import re 
>>> re.sub('/?$', '/', 'http://www.so.com/') 
'http://www.so.com/' 
>>> re.sub('/?$', '/', 'http://www.so.com') 
'http://www.so.com/'