Python中用于确保尾随字符作为字符串包含在Python中的最佳方法是什么?
一个例子:脚本中用户提供的URL需要用于构造URL,因此我们要确保URL中包含尾部斜杠,否则我们自己添加一个斜杠。
因此,鉴于字符串http://www.so.com
或http://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技巧和最佳实践的一部分。
答案 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/'