0

だから私は変化し続けるこれらのURLを持っています:

http://news.google.com/news/url?sa=t&fd=R&usg=AFQjCNFcQAQ4S3H5xUuU4N-LoM2I9tLxJg&url=http://www.washingtonpost.com/blogs/going-out-guide/wp/2013/11/08/dallas-buyers-club-thor-the-dark-world-and-other-new-movies-reviewed/

しかし、変更の最初の部分を取り除き、次のものだけを残したいと思います。

http://www.washingtonpost.com/blogs/going-out-guide/wp/2013/11/08/dallas-buyers-club-thor-the-dark-world-and-other-new-movies-reviewed/

それまでのすべてを削除するには、どの正規表現を使用しますか?

「usg」番号がその URL で変更されるため、「startswith()」を使用できません。

4

4 に答える 4

3

仕事に適したツールを使用してください。urlparseモジュールを使用してクエリ文字列を解析します。

import urlparse

qs = urlparse.urlsplit(inputurl).query
url = urlparse.parse_qs(qs).get('url', [None])[0]

これは、url クエリ文字列に要素がない場合は に設定urlされ、それ以外の場合は URL 値に設定されます。Noneurl=

デモ:

>>> import urlparse
>>> inputurl = 'http://news.google.com/news/url?sa=t&fd=R&usg=AFQjCNFcQAQ4S3H5xUuU4N-LoM2I9tLxJg&url=http://www.washingtonpost.com/blogs/going-out-guide/wp/2013/11/08/dallas-buyers-club-thor-the-dark-world-and-other-new-movies-reviewed/'
>>> qs = urlparse.urlsplit(inputurl).query
>>> urlparse.parse_qs(qs).get('url', [None])[0]
'http://www.washingtonpost.com/blogs/going-out-guide/wp/2013/11/08/dallas-buyers-club-thor-the-dark-world-and-other-new-movies-reviewed/'
于 2013-11-10T01:58:00.103 に答える
1

なぜだけではないのですか

print data.split("&url=", 1)[1].split("&", 1)[0]

サンプルラン

data = "http://news.google.com/news/url?sa=t&fd=R&usg=AFQjCNFcQAQ4S3H5xUuU4N-
LoM2I9tLxJg&url=http://www.washingtonpost.com/blogs/going-out-guide/wp/2013/
11/08/dallas-buyers-club-thor-the-dark-world-and-other-new-movies-reviewed/"
print data.split("&url=", 1)[1].split("&", 1)[0]

出力

http://www.washingtonpost.com/blogs/going-out-guide/wp/2013/11/08/dallas-buyers-club-thor-the-dark-world-and-other-new-movies-reviewed/
于 2013-11-10T01:51:09.943 に答える
1

これはうまくいきます:

url = "http://news.google.com/news/url?sa=t&fd=R&usg=AFQjCNFcQAQ4S3H5xUuU4N-
LoM2I9tLxJg&url=http://www.washingtonpost.com/blogs/going-out-guide/wp/2013/
11/08/dallas-buyers-club-thor-the-dark-world-and-other-new-movies-reviewed/"

In [148]: url.split('&url=')[1]
Out[148]: 'http://www.washingtonpost.com/blogs/going-out-guide/wp/2013/11/08/dallas-buyers-club-thor-the-dark-world-and-other-new-movies-reviewed/'

urlparse.parse_qs(url)コメントで言及されている@MartijnPietersとして使用します。

于 2013-11-10T01:54:33.007 に答える
1

「&url=」の右側はURLではありませんのでご注意ください。URL エンコードされたurlです。たとえば、元の URL に「&」が含まれている場合、これには「%26」が含まれます。デコードせずに使用すると、多くの URL で機能しますが、一般的には保証されていません。

Martjin が示唆したように、これは常に正しく機能します。

import urlparse
data = "http://news.google.com/news/url?sa=t&fd=R&usg=AFQjCNFcQAQ4S3H5xUuU4N-LoM2I9tLxJg&url=http://www.washingtonpost.com/blogs/going-out-guide/wp/2013/11/08/dallas-buyers-club-thor-the-dark-world-and-other-new-movies-reviewed/"
o = urlparse.urlparse(data)
q = urlparse.parse_qs(o.query)
print q['url']
于 2013-11-10T02:00:02.320 に答える