7

Pythonコードは次のとおりです。

url = http://www.phonebook.com.pk/dynamic/search.aspx
path = urlparse(url)
print (path)

>>>ParseResult(scheme='http', netloc='www.phonebook.com.pk', path='/dynamic/search.aspx', params='', query='searchtype=cat&class_id=4520&page=1', fragment='')

print (path.path)
>>>/dynamic/search.aspx

path.path、私は自分の要件に変更する必要があります。「/dynamic/search.aspx」がパスの場合のように、「/dynamic/」であるスラッシュを含む最初のスラッシュと最後のスラッシュの間の部分のみが必要です。

これらの 2 つの行を試してみましたが、最終結果は期待したものではありません。そのため、「urllib.parse」の知識が不十分であるため、この質問をしています。

path = path.path[:path.path.index("/")]
print (path)
>>>Returns nothing.
path = path.path[path.path.index("/"):]
>>>/dynamic/search.aspx (as it was before, no change.)

要するに、 path.path の結果が何であれ、私の必要性はディレクトリ名だけです。例: "dynamic/search/search.aspx"。今、「動的/検索/」が必要です

4

2 に答える 2

1

私はurlparseあなたの状況に役立つ可能性のある方法を見つけようとしましたが、見過ごされている可能性がありますが、見過ごされている可能性がありますが、とにかく、このレベルでは、おそらく独自の方法を作成するかハックする必要があります:

>>> path.path
'/dynamic/search.aspx'

>>> import re
>>> d = re.search(r'/.*/', path.path)
>>> d.group(0)
'/dynamic/'

これは単なる例です。次のように組み込みメソッドを使用することもできます。

>>> i = path.path.index('/', 1)
>>> 
>>> path.path[:i+1]
'/dynamic/'

編集:

最後の例に気付かなかったので、別の方法を次に示します。

>>> import os
>>> path = os.path.dirname(path.path) + os.sep
>>> path
'/dynamic/'
>>> path = os.path.dirname(s) + os.sep
>>> path
'dynamic/search/'

またはre

>>> s
'dynamic/search/search.aspx'
>>> d = re.search(r'.*/', s)
>>> d
<_sre.SRE_Match object; span=(0, 15), match='dynamic/search/'>
>>> d.group(0)
'dynamic/search/'
>>> 
>>> s = '/dynamic/search.aspx'
>>> d = re.search(r'.*/', s)
>>> d.group(0)
'/dynamic/'
于 2016-07-24T13:44:22.707 に答える