0

python 正規表現を使用してクリーンアップしたい (私が言うには醜い) URL がたくさんあります。したがって、私の URL は次のようになります。

http://www.thisislink1.com/this/is/sublink1/1
http://www.thisislink2.co.uk/this/is/sublink1s/klinks
http://www.thisislinkd.co/this/is/sublink1/hotlinks/2
http://www.thisislinkf.com.uk/this/is/sublink1d/morelink
http://www.thisislink1.co.in/this/is/sublink1c/mylink
....

私がやりたいのは、これらの URL をクリーンアップして、最終的なリンクが次のようになるようにすることです。

http://www.thisislink1.com
http://www.thisislink2.co.uk
http://www.thisislinkd.co
http://www.thisislinkf.de
http://www.thisislink1.us
....

どうすればPythonicな方法でこれを達成できるのだろうと思っていました。これが101の質問である場合は申し訳ありません-私はpytho正規表現構造が初めてです。

4

4 に答える 4

7

urlparse.urlsplitを使用します:

In [3]: import urlparse    

In [8]: url = urlparse.urlsplit('http://www.thisislink1.com/this/is/sublink1/1')

In [9]: url.netloc
Out[9]: 'www.thisislink1.com'

Python3では次のようになります

import urllib.parse as parse
url = parse.urlsplit('http://www.thisislink1.com/this/is/sublink1/1')
于 2012-12-07T12:40:57.653 に答える
6

なぜ正規表現を使用するのですか?

>>> import urlparse
>>> url = 'http://www.thisislinkd.co/this/is/sublink1/hotlinks/2'
>>> urlparse.urlsplit(url)
SplitResult(scheme='http', netloc='www.thisislinkd.co', path='/this/is/sublink1/hotlinks/2', query='', fragment='')
于 2012-12-07T12:41:47.063 に答える
1

他の人が提案したようにURLパーサーを使用する必要がありますが、完全を期すために、正規表現を使用したソリューションを次に示します。

import re

url='http://www.thisislink1.com/this/is/sublink1/1'

re.sub('(?<![/:])/.*','',url)

>>> 'http://www.thisislink1.com'

説明:

:orが前に付いていない最初のスラッシュ以降のすべてに一致し、/それを Nothing に置き換え''ます。

(?<![/:]) # Negative lookbehind for '/' or ':'
/.*       # Match a / followed by anything
于 2012-12-07T12:45:47.903 に答える
0

たぶん、次のようなものを使用します:

result = re.sub(r"(?m)(http://(www)?\..*?)/", r"\1", subject)
于 2012-12-07T12:45:41.700 に答える