2016-04-28 3 views
0

У меня есть 2 типа URLSКак проверить, если URL имеет номера или строки в конце с помощью Python

первый имеет номера в конце URL

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

второй:

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

Как я могу узнать, что мой вход - как первый или второй?

я попытался это:

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

Почему вы, мужчины здесь есть регулярное выражение? –

+0

@ DanielRoseman Я попробовал urlParse, но я хочу сделать это с помощью regex – parik

+0

@parik, вы знаете, что regex означает регулярное выражение? Каково значение вашего названия? – MohitC

ответ

1

Вы можете использовать регулярное выражение для проверки, если URL заканчивается цифрами или буквами, т.е.:

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

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

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

ваш код более или менее правильно уже, но, как правило, в Python вы просто преобразовать йа та в формат данных, который вы хотите, пока она не сломается (прошу прощения не принцип разрешения)

Таким образом, вы можете попробовать что-то вроде этого (в 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') 

Это не значит, что разрешение на запрос невозможно, просто чтобы оно выглядело не так элегантно

if number2.isdigit() and number3.isdigit(): 
    print("first") 
else : 
    print("second") 
+0

также, если вы не пишете код для существующего приложения python2 или не требуете использования старых библиотек, напишите только в python 3 (: – Jeffrey04

+0

Спасибо за ваш ответ, я работаю с Scrapy, и мне нужно писать в python 2.7 – parik

+1

ouch, это .... в любом случае я включил решение для Python 2 – Jeffrey04

 Смежные вопросы

  • Нет связанных вопросов^_^