2011-07-12 3 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? –

ответ

3

Я не знаком с URLLIB и его выход на пути, но думаю, что один из способов, чтобы сформировать новый список, который вы можете использовать список понимание следующим образом:

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

Или что-то вроде этого, если только ведущий «/» :

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

Иначе, если трейлинг тоже:

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

и, по крайней мере, если ваша строка в пути всегда начиная с одного «/», чем самый простой способ:

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

Я не хочу, чтобы эти пустые строки. Я понимаю, что я могу удалить их, создав новый список без них, но это кажется неаккуратным. Есть ли лучший способ удалить пустые строки и косые черты?

Что? Есть только одна пустая строка, и она всегда первая, по определению.

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

Тогда, может быть, использовать список comp? 'path_list = [(p) для p в path.split ('/'), если len (p)]' – craigs

+0

@craigs: Это не произвольно. Это только первая позиция. Последняя позиция может иметь смысл. Неправильное подавление элементов пути. –

1

удалить пустые предметы?

pathlist.remove('') 
1

Я добавил это как комментарий к комментарию, так на всякий случай: не могли бы вы использовать список понимание, чтобы исключить пустые элементы, возвращенные из раскола, то есть

path_list = [(p) for p in path.split('/') if len(p)]