1

基本的に、私はこの現在の URL と、新しい URL にマージしたい他のキーを持っていますが、3 つの異なるケースがあります。

現在の URL が localhost:32401/A/B/foo であるとします。

キーがバーの場合、localhost:32401/A/B/bar を返したい

キーがスラッシュで始まり、/A/bar の場合、localhost:32401/A/bar を返したい

最後に、キーが独自の独立した URL の場合、そのキーを返したいだけです = http://foo.com/bar -> http://foo.com/bar

文字列を手動で操作せずに少なくとも最初の 2 つのケースを実行する方法があると思いますが、os.path モジュールですぐに飛び出したものは何もありませんでした。

4

3 に答える 3

1

urlparseモジュールをチェックアウトしましたか?

ドキュメントから、

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

あなたの最初のケースに役立つはずです。

明らかに、残りの基本的な文字列操作はいつでも実行できます。

于 2010-06-09T18:47:43.217 に答える
0

Python の文字列オブジェクトにはすべて、startswith メソッドと endwith メソッドがあり、そこに到達できるはずです。もしかしてこういうこと?

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)
于 2010-06-09T18:47:19.520 に答える
0

文字列を手動で操作せずに少なくとも最初の 2 つのケースを実行する方法があると思いますが、os.path モジュールですぐに飛び出したものは何もありませんでした。

これは、代わりに ( urllib.parsePython 3.x の場合) またはurlparse(Python 2.x の場合) を使用するためです。

ただし、あまり経験がないので、 and を使用したスニペットを次に示し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)
于 2010-06-09T18:48:25.743 に答える