0

2種類のURLがあります

最初のものはURLの最後に数字があります

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

2番目のもの:

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

自分の入力が 1 つ目または 2 つ目のようなものであることをどのように知ることができますか?

私はこれを試しました:

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"
4

3 に答える 3

2

なぜこれを正規表現でやりたいのかわかりませんが、これはうまくいくでしょう:

if re.search(r't:ac=(\d+)', myURL):
    print "numbers"
于 2016-04-28T09:24:00.703 に答える
1

正規表現を使用して、URL が数字または文字で終わっているかどうかを確認できます。

if re.search(r"\d+$", url):
    # url ends with numbers
if re.search("[a-z]+$", url, re.IGNORECASE):
    # url ends with letters
于 2016-04-28T09:22:56.600 に答える
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")
于 2016-04-28T09:53:21.740 に答える