2011-07-12 23 views
2

私は現在、URLの分割を含むプロジェクトを進めています。 urlparseモジュールを使用してURLを分割したので、今はパスセグメントのみで作業しています。URLをPythonのリストに分割する

問題は、ディレクトリを区切るために区切り文字 "/"に基づいて文字列を分割しようとすると、私のリストに空の文字列で終わることです。例えば

、私は次の操作を実行したとき:

import urlparse 
url = "http://example/url/being/used/to/show/problem" 
parsed = urlparse.urlparse(url) 
path = parsed[2] #this is the path element 

pathlist = path.split("/") 

を私はリストを得る:

['', 'url', 'being', 'used', 'to', 'show', 'problem'] 

は、私はこれらの空の文字列を望んでいません。私はそれらを使わずに新しいリストを作ることによってそれらを取り除くことができることを理解していますが、それはちょっとしたことです。空の文字列とスラッシュを削除するより良い方法はありますか?

+0

urlparse module? –

答えて

3

私はurllibは、パスのために、その出力に精通していないですが、新しいリストを形成する一つの方法では、次の方法のリストの内包表記を使用することができると思います:のみ「/」をリードする場合は、このような

[x for x in path.split("/") if x] 

か何か:エルス

path.lstrip('/').split("/") 

すぎ末尾の場合:

path.strip('/').split("/") 

と、少なくとも場合をパス内のあなたの文字列は、常に最も簡単な方法よりも、単一の「/」から始まる次のとおりです。

path[1:].split('/') 
4

私はこれらの空の文字列を望んでいません。私はそれらを使わずに新しいリストを作ることによってそれらを取り除くことができることを理解していますが、それはちょっとしたことです。空の文字列とスラッシュを削除するより良い方法はありますか?

何ですか?ただ1つのの空の文字列があり、それは定義上常に最初です。

pathlist = path.split("/")[1:] 

かなり一般的です。


末尾のスラッシュは、「空の」ファイル名を意味します。この場合、デフォルトの名前が暗示されている可能性があります(例:index.html)

意味があります。

"http://example/url/being/used/to/show/problem" 

ファイル名が「問題」

"http://example/url/being/used/to/show/problem/" 

ディレクトリである「問題」と、デフォルトのファイル名は空の文字列で暗示されています。

+0

URLの最後にスラッシュがある場合は、別の空の文字列があります。 – chindes

+0

次に、リストコンプを使用しますか? 'path_list = [path.split( '/')ならばpのための(p)len(p)]' – craigs

+0

@craigs:それは恣意的ではありません。それは最初のポジションだけです。最後のポジションは意味があります。パス要素を単純に抑制するのは間違いです。 –

1

空のアイテムを削除しますか?

pathlist.remove('') 
2
pathlist = paths.strip('/').split("/") 
1

私は念のために、コメントにコメントとしてこれを追加しました: あなたは、空の要素を除外するために、リストの内包表記を使用できませんでしすなわち

path_list = [(p) for p in path.split('/') if len(p)] 
、スプリットから返さ