基本上我有这个当前的URL,这等重点,我要合并到一个新的URL,但也有三种不同的情况。

假设当前URL为localhost:32401 / A / B /富

如果键是酒吧然后我想本地主机返回:32401 / A / B /酒吧

如果以斜线键开始并且/ A /酒吧然后我想本地主机返回:32401 / A /酒吧

最后,如果关键是它自己独立的网址,然后我只想返回键= http://foo.com/栏 - > http://foo.com/bar

我假设有一种方法来在前两种情况下至少做,而无需手动操作字符串,但没有我的os.path中模块中立即跳了出来。

有帮助吗?

解决方案

  

我假设有一种方法来在前两种情况下至少做,而无需手动操作字符串,但没有我的os.path中模块中立即跳了出来。

这是因为要使用 urllib.parse (对于Python 3 .X)或 urlparse (对于Python 2.x的)来代替。

我没有与它太多的经验,虽然如此,这里的使用str.split()str.join()片段。

urlparts = url.split('/')

if key.startswith('http://'):
    return key
elif key.startswith('/'):
    return '/'.join(urlparts[:2], key[1:])
else:
    urlparts[len(urlparts) - 1] = key
    return '/'.join(urlparts)

其他提示

你检查出 里urlparse模块?

从文档,

from urlparse import urljoin
urljoin('http://www.cwi.nl/%7Eguido/Python.html', 'FAQ.html')

应该帮助你的第一个案例。

显然,你总是可以做基本的字符串操作的其余部分。

字符串在Python对象均具有startswith和方法的endsWith应该能够让你那里。事情是这样的吧?

def merge(current, key):
  if key.startswith('http'):
    return key
  if key.startswith('/'):
    parts = current.partition('/')
    return '/'.join(parts[0], key)
  parts = current.rpartition('/')
  return '/'.join(parts[0], key)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top