2011-08-31 24 views
48

Python'daki bir URL'deki son eğik çizgiyi takip eden her şeyi nasıl alabilirim? Örneğin, bu URL'ler aşağıdaki dönmelidir:URL'de son eğik çizgi sonrası her şey nasıl alınır?

URL: http://www.test.com/TEST1 
returns: TEST1 

URL: http://www.test.com/page/TEST2 
returns: TEST2 

URL: http://www.test.com/page/page/12345 
returns: 12345 

Ben urlparse denedim, ama bu beni tam yol dosya adı verir, bu tür page/page/12345 olarak.

+1

pop URL gibi querystrings içerme olasılığı varsa '... foo = bar' ve bu istemiyoruz; “Urlparse” ı naeg'in “basename” önerisiyle birlikte kullanmayı öneririm. – plundra

+0

http://docs.python.org/library/urlparse.html#module-urlparse –

cevap

133

sadece the string methods in the standard library görebilir ve kolayca 'dosya' parçası ve geri kalanı arasında senin url bölebilirsiniz, fantezi şeylere ihtiyacım yok:

url.rsplit('/', 1) 

Yani alabilirsiniz sadece ilgilendiğiniz kısmı ile:

url.rsplit('/', 1)[-1] 
+6

Dostum, sen bir baltalımsın. Teşekkür ederim! – mdandr

+0

Çok güzel çözüm ... –

+4

'url.rsplit ('/', 1)' bir liste döndürür ve 'url.rsplit ('/', 1) [- 1]' son eğik çizgiden sonraki bittir. – Hugo

10

rsplit görev kadar olmalıdır:

In [1]: 'http://www.test.com/page/TEST2'.rsplit('/', 1)[1] 
Out[1]: 'TEST2' 
2
extracted_url = url[url.rfind("/")+1:]; 
+0

cevabınızdan 'dize içe aktarma rfind' ifadesini unutmuş – Kimvais

40

Bir daha (idio (ma) tik) yolu:

URL.split("/")[-1] 
+5

Bu kabul edilen yanıt –

0

partition ve rpartition tür şeyler için de kullanışlıdır:

url.rpartition('/')[2] 
-1
url ='http://www.test.com/page/TEST2'.split('/')[4] 
print url 

Çıktı: TEST2.

+1

olmalıdır. dizin olarak, aksi takdirde bu sadece tam olarak çok fazla '/' dizeleri üzerinde çalışır –

4

urlparse (eğer herhangi bir sorgu dizesi parametresinden kurtulmak için) istiyorsanız kullanmak iyidir.

import urllib.parse 

urls = [ 
    'http://www.test.com/TEST1', 
    'http://www.test.com/page/TEST2', 
    'http://www.test.com/page/page/12345', 
    'http://www.test.com/page/page/12345?abc=123' 
] 

for i in urls: 
    url_parts = urllib.parse.urlparse(i) 
    path_parts = url_parts[2].rpartition('/') 
    print('URL: {}\nreturns: {}\n'.format(i, path_parts[2])) 

Çıktı:

URL: http://www.test.com/TEST1 
returns: TEST1 

URL: http://www.test.com/page/TEST2 
returns: TEST2 

URL: http://www.test.com/page/page/12345 
returns: 12345 

URL: http://www.test.com/page/page/12345?abc=123 
returns: 12345 
4

Böyle yapmak cand: kuyruk dosya adı olacaktır

head, tail = os.path.split(url) 

.

0

Bölünmüş url ve son öğe url.split('/').pop()

İlgili konular