确保在Python中将尾随字符作为字符串包含在内

时间:2014-10-03 22:01:55

标签: 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/'

更新

我应该澄清一下,我正在寻找一个纯粹的Python解决方案,而不必使用任何额外的模块。只是学习Python技巧和最佳实践的一部分。

4 个答案:

答案 0 :(得分:2)

您可以使用[-1]索引访问字符串的结尾:

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

答案 1 :(得分:2)

对于这样的应用程序,您应该使用urllib.parse.urljoin(Python中的urlparse.urljoin 2)无需手动管理斜杠。

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是一个类似的功能。

答案 2 :(得分:1)

对于难以阅读的单行,你可以这样做:

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

(url or '') - 如果url为false,null,空列表等,则此部分默认将字符串设置为字符串...

[(url or '')[-1] == '/'] - 此部分是一个索引查找,如果网址不以字符串结尾,其值应为0,如果匹配则为1

['/', ''] - 根据前面提到的索引查找的值,我们将在url

的末尾添加斜杠或空字符串

答案 3 :(得分: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/'