2013-07-17 143 views
1

我有例如URL:提取URL的一部分 - 蟒蛇

http://name.abc.wxyz:1234/Assts/asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5 

從這個網址我想只提取「asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5」我怎麼能做到這一點?

我仍然在學習正則表達式,我不能夠解決以上。任何建議,將不勝感激。

+0

只爲這個網址或其他人? – zhangyangyu

+0

'asset.epx'總是一樣嗎? – TerryA

+0

@Haidro根據我擁有的數據總是相同的!但我認爲解決了這個問題..謝謝你的時間! –

回答

3

你並不真的需要這樣的正則表達式。剛剛拆分字符串:

url.split('/')[-1] 
+0

爲什麼這會降低投票率?這是一個完全可以接受的答案 – TerryA

+0

@是它是...我用了以下,它的工作原理! –

+0

@Blender如果我不得不從中提取唯一的id,例如'F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5'。我是否通過正則表達式來實現它? –

7

您可以使用urlparse假設asset.epx是一樣的:

>>> import urlparse 
>>> url = 'http://name.abc.wxyz:1234/Assts/asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5' 
>>> res = urlparse.urlparse(url) 
>>> print 'asset.epx?'+res.query 
asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5 

如果你需要從URL等信息,這非常有用(您可以print res檢查出的其他如果你使用的是Python 3雖然,你就必須做from urllib.parse import urlparse))

;信息就可以得到。

3

根據Python的版本,您需要Python 2.x(http://docs.python.org/2/library/urlparse.html)中的urlparse或Python 3.x(http://docs.python.org/2/library/urlparse.html)中的urllib.parse。在Python 3(所有我可以),下面的代碼片段實現了你所需要的,而不訴諸正則表達式:

import urllib.parse 

address = "http://name.abc.wxyz:1234/Assts/asset.epx?id=F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5" 
parsed = urllib.parse.urlsplit(address) 
print("{}?{}".format(parsed.path.split("/")[-1], parsed.query) 

輸出爲「?asset.epx ID = F3F94D94-7232-4FA2-98EF-07sdfssfdsa3B5」這裏。

+0

謝謝大家! –

+0

@SangameshHs如果Brett的答案是解決了你的問題,並且這篇文章到達了你,你應該接受投票回答你的問題。這是StackOverflow的方式:] – jdero

+0

@jdero Brett的答案是100%正確的,但攪拌機第一回答了這個問題,當我點擊接受的答案它saysi必須等待5分鐘,接受了答案。所以,現在我做到了!歡呼聲 –