2016-04-28 12 views
0

Ich habe 2 Arten von URLSWie kann man überprüfen, ob URL eine Zahl oder String am Ende von Python hat

die ersten Zahlen am Ende der URL hat

www.example.fr/drive/cat.productlist.pagination_0.topage/2?t:ac=3686962/3686315 

die zweiten:

www.example.com/some/cat.productlist.pagination_0.topage/4?t:ac=someText 

wie kann ich wissen, meine eingabe ist wie erste oder zweite? diese

Ich habe versucht:

myURL = http://www.example.com/some/cat.productlist.pagination_0.topage/4?t:ac=someText 
         parsed_url = urlparse.urlparse(myURL) 
         number2, number3 = urlparse.parse_qs(parsed_url.query)["t:ac"][0].split("/") 

         if (isinstance(number2, numbers.Number) and isinstance(number3, numbers.Number)) : 
          print "first" 
         else : 
          print "second" 
+2

Warum haben Sie Männer Regex hier? –

+0

@DanielRoseman Ich versuchte von urlParse, aber ich möchte das durch Regex tun – parik

+0

@parik, wussten Sie Regex steht für regulären Ausdruck? Was ist die Bedeutung Ihres Titels? – MohitC

Antwort

1

Sie einen regulären Ausdruck verwenden können, um zu überprüfen, ob die URL mit Zahlen oder Buchstaben endet, dh:

if re.search(r"\d+$", url): 
    # url ends with numbers 
if re.search("[a-z]+$", url, re.IGNORECASE): 
    # url ends with letters 
2

Ich weiß nicht, warum Sie dies tun wollen mit regex, aber dies funktionieren würde:

if re.search(r't:ac=(\d+)', myURL): 
    print "numbers" 
1

Code mehr oder weniger korrekt schon ist, aber in der Regel in python konvertieren Sie nur die da ta in das Datenformat Sie möchten, bis es (bitte um Vergebung nicht Erlaubnis-Prinzip)

So können Sie so etwas wie dies versuchen bricht (in Python3),

from urllib.parse import urlparse, parse_qs 

myURL = 'http://www.example.com/some/cat.productlist.pagination_0.topage/4?t:ac=someText' 

query = parse_qs(urlparse(myURL).query) 

try: 
    number2, number3 = query.get('t:ac', [''])[0].split('/') 

    # do something with the numbers 
    new_number = int(number2) + int(number3) 

    print('first') 
except ValueError: 
    # t:ac does not have a slash in it 
    print('second') 

(Python2)

from __future__ import print_function 
from urlparse import urlparse, parse_qs 

myURL = 'http://www.example.com/some/cat.productlist.pagination_0.topage/4?t:ac=someText' 

query = parse_qs(urlparse(myURL).query) 

try: 
    number2, number3 = query.get('t:ac', [''])[0].split('/') 

    # do something with the numbers 
    new_number = int(number2) + int(number3) 

    print('first') 
except ValueError: 
    # t:ac does not have a slash in it 
    print('second') 

es ist nicht, dass das fragen der Erlaubnis nicht möglich ist, nur dass es wahrscheinlich nicht so elegant aussehen würde

+0

auch wenn Sie nicht Code für vorhandene Python2-Anwendung schreiben, oder die Verwendung von alten Bibliotheken erfordern, schreiben Sie bitte nur in Python 3 (: – Jeffrey04

+0

Danke für deine Antwort, ich arbeite mit Scrapy und ich muss in Python schreiben 2,7 – parik

+1

autsch, das ist .... sowieso habe ich auch Lösung für Python 2 enthalten – Jeffrey04