2016-07-24 6 views
2

Вот код питона:изменение urlparse.path из URL

url = http://www.phonebook.com.pk/dynamic/search.aspx 
path = urlparse(url) 
print (path) 

>>>ParseResult(scheme='http', netloc='www.phonebook.com.pk', path='/dynamic/search.aspx', params='', query='searchtype=cat&class_id=4520&page=1', fragment='') 

print (path.path) 
>>>/dynamic/search.aspx 

Теперь мне нужно изменить path.path к моему требованию. Например, если «/dynamic/search.aspx» - это путь, мне нужны только части между первой косой чертой и последней косой чертой, включая косые черты, которые являются «/ dynamic /».

Я пробовал эти две строки, но конечный результат - это не то, что я ожидал, поэтому я задаю этот вопрос, поскольку моего знания «urllib.parse» недостаточно.

path = path.path[:path.path.index("/")] 
print (path) 
>>>Returns nothing. 
path = path.path[path.path.index("/"):] 
>>>/dynamic/search.aspx (as it was before, no change.) 

Короче, чем бы ни был путь pathpath, моя потребность - это только имена каталогов. Например: «dynamic/search/search.aspx». теперь мне нужно «dynamic/search /»

ответ

1

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

>>> path.path 
'/dynamic/search.aspx' 

>>> import re 
>>> d = re.search(r'/.*/', path.path) 
>>> d.group(0) 
'/dynamic/' 

Это просто пример для вас, вы можете также использовать встроенные методы, например, так:

>>> i = path.path.index('/', 1) 
>>> 
>>> path.path[:i+1] 
'/dynamic/' 

EDIT:

Я не заметил ваш последний пример, так вот еще один способ:

>>> import os 
>>> path = os.path.dirname(path.path) + os.sep 
>>> path 
'/dynamic/' 
>>> path = os.path.dirname(s) + os.sep 
>>> path 
'dynamic/search/' 

Или с re:

>>> s 
'dynamic/search/search.aspx' 
>>> d = re.search(r'.*/', s) 
>>> d 
<_sre.SRE_Match object; span=(0, 15), match='dynamic/search/'> 
>>> d.group(0) 
'dynamic/search/' 
>>> 
>>> s = '/dynamic/search.aspx' 
>>> d = re.search(r'.*/', s) 
>>> d.group(0) 
'/dynamic/'