2014-10-03 100 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/'