2012-04-04 18 views
2

URLから表示するクエリ名と値を取得します。 たとえば、 url='http://host:port_num/file/path/file1.html?query1=value1&query2=value2' これからクエリ名とその値を解析し、それを印刷します。pythonのregexでURLを解析する

+3

お試しください。 – claesv

答えて

2

私はそれがurlparseを使用するregex、より良いを使用しないことが最善ですが、ここに私regexであることに同意します。 urlparseのようなクラスは、すべてのURLを効率的に処理するために特別に開発されたものであり、可能であればregexよりもはるかに信頼性が高いです。

>>> x = 'http://www.example.com:8080/abcd/dir/file1.html?query1=value1&query2=value2' 
>>> query_pattern='(query\d+)=(\w+)' 
>>> # query_pattern='(\w+)=(\w+)' a more general pattern 
>>> re.findall(query_pattern,x) 
[('query1', 'value1'), ('query2', 'value2')] 
+0

正規表現がこのネイルの間違ったハンマーである理由を詳しく説明する価値があります。 –

+0

申し訳ありませんが、私は非常に簡単に説明したと思います。あなたが望むならば、それをより良く説明してください。D – jamylak

+0

jamylakありがとう。あなたは一般的にそれを分割することができますどのように電話私plaseできますか?たとえば。クエリに "name = asd&name1 = qwerty"が含まれている場合、上記のパターンは動作しません。代わりに名前のワットvを使用する代わりにクエリパターンで使用できます。私はPythonの正規表現に私はこれを尋ねているので新しくなっています:) – Myjab

8

正規表現を使用しないでください! urlparseを使用してください。

>>> import urlparse 
>>> urlparse.parse_qs(urlparse.urlparse(url).query) 
{'query2': ['value2'], 'query1': ['value1']} 
+1

そして 'urlparse.parse_qs(urlparse.urlparse(" http://www.example.com:8080/abcd/dir/file1.html?query1=value1&query2=value2 ").query)' – Dikei

+2

または '[ urlparse(url).query.split( "&")]のペアのためのpair.split( "=") " – Kimvais