Go言語とpythonでurlをパースする
# coding=utf-8 from urlparse import urlparse, parse_qs s = "http://www.cwi.nl:80/%7Eguido/Python.html?a=b#f" u = urlparse(s) print u # スキーム print u.scheme # -> http # ホスト print u.netloc # -> www.cwi.nl:80 # ポート番号とhostnameを分ける h = u.netloc.split(':') print h[0] # -> www.cwi.nl print h[1] # -> 80 # パス print u.path # -> /%7Eguido/Python.html # フラグメント print u.fragment # -> f # クエリ print u.query # -> a=b # クエリパラメータをmapにする m = parse_qs(u.query) print m # -> {'a': ['b']} # クエリパラメータを取得 print m['a'][0] # -> b
同じことをgoで
package main import "fmt" import "net/url" import "strings" func main() { s := "http://www.cwi.nl:80/%7Eguido/Python.html?a=b#f" u, err := url.Parse(s) if err != nil { panic(err) } // スキーム fmt.Println(u.Scheme) // -> http // ホスト fmt.Println(u.Host) // -> www.cwi.nl:80 // ポート番号とhostnameを分ける h := strings.Split(u.Host, ":") fmt.Println(h[0]) // -> www.cwi.nl fmt.Println(h[1]) // -> 80 // パス fmt.Println(u.Path) // -> /~guido/Python.html // フラグメント fmt.Println(u.Fragment) // -> f // クエリ fmt.Println(u.RawQuery) // -> a=b // クエリパラメータをmapにする m, _ := url.ParseQuery(u.RawQuery) fmt.Println(m) // -> map[a:[b]] // クエリパラメータを取得 fmt.Println(m["a"][0]) // -> b }
あまり変わらない感じ