2

現在、URL の分割を含むプロジェクトに取り組んでいます。urlparse モジュールを使用して URL を分割したので、現在はパス セグメントのみを使用しています。

問題は、ディレクトリを区切るために区切り文字「/」に基づいて文字列を split() しようとすると、リストに空の文字列が表示されることです。

たとえば、次のようにすると:

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']

これらの空の文字列は必要ありません。それらなしで新しいリストを作成することでそれらを削除できることに気づきましたが、それはずさんなようです. 空の文字列とスラッシュを削除するより良い方法はありますか?

4

5 に答える 5

5

これらの空の文字列は必要ありません。それらなしで新しいリストを作成することでそれらを削除できることに気づきましたが、それはずさんなようです. 空の文字列とスラッシュを削除するより良い方法はありますか?

何?空の文字列は1 つだけで、定義上、常に最初になります。

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

かなり一般的です。


末尾のスラッシュは、「空の」ファイル名を意味する場合があります。その場合、デフォルト名が暗示される場合があります (たとえば、index.html)。

意味があるかもしれません。

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

ファイル名は「問題」です

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

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

于 2011-07-12T18:50:33.787 に答える
3

私はurllibとパスの出力に慣れていませんが、新しいリストを作成する1つの方法は、次の方法でリスト内包表記を使用できると思います:

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

または、先行する「/」のみの場合は次のようになります。

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

そうでなければ、あまりにも末尾にある場合:

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

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

path[1:].split('/')
于 2011-07-12T18:49:35.300 に答える
2
pathlist = paths.strip('/').split("/")
于 2011-07-12T18:56:50.657 に答える
1

これをコメントにコメントとして追加したので、念のため:リスト内包表記を使用して、分割から返された空の要素を除外できませんでしたか?

path_list = [(p) for p in path.split('/') if len(p)]
于 2011-07-12T19:42:09.107 に答える
1

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

pathlist.remove('')
于 2011-07-12T18:50:42.200 に答える