連番urlの展開
正規表現の練習に連番urlを展開して表示するスクリプトを作ってみた。
http://www.doqn.ne.jp/65-32/cg/[10-20].html
だったら
http://www.doqn.ne.jp/65-32/cg/10.html
http://www.doqn.ne.jp/65-32/cg/11.html
http://www.doqn.ne.jp/65-32/cg/12.html
って感じに20まで開いていく。
>>> ================================ RESTART ================================ >>> import re >>> url = "http://www.domain.ne.jp/65-32/cg/[10-20].html" >>> splitUrl = re.split('\[|\]', url) #説明1 >>> print splitUrl ['http://www.domain.ne.jp/65-32/cg/', '10-20', '.html'] >>> number = re.split('-', splitUrl[1]) #説明2 >>> print number ['10', '20'] >>> number = [int(element) for element in number] #説明3 >>> print number [10, 20] >>> for count in range(min(number), max(number)+1): #説明4 print "%s%d%s" % (splitUrl[0], count, splitUrl[2]) http://www.domain.ne.jp/65-32/cg/10.html http://www.domain.ne.jp/65-32/cg/11.html http://www.domain.ne.jp/65-32/cg/12.html http://www.domain.ne.jp/65-32/cg/13.html http://www.domain.ne.jp/65-32/cg/14.html http://www.domain.ne.jp/65-32/cg/15.html http://www.domain.ne.jp/65-32/cg/16.html http://www.domain.ne.jp/65-32/cg/17.html http://www.domain.ne.jp/65-32/cg/18.html http://www.domain.ne.jp/65-32/cg/19.html http://www.domain.ne.jp/65-32/cg/20.html▼酷くおざなりな説明。>>> splitUrl = re.split('\[|\]', url)・説明1 re.splitは特定のパターンで区切ったリストを返す正規表現。 変数urlの内容を"["、"]"で区切って変数splitUrlに代入。 "["や"]"は特殊文字なので、円(\バックスラッシュ)をつけてエスケープしている。>>> number = re.split('-', splitUrl[1])・説明2 ['10-20']をさらに'-'で区切って変数numbaerに代入。>>> number = [int(element) for element in number]・説明3 リスト内包表現と呼ばれるPythonの特殊な記述法。 上記はfor element in number: number = int(element)と同じ意味。>>> for count in range(min(number), max(number)+1): #説明4・説明4 min(number)は、配列numberの中で最も小さい値を出す。 max(number)は、配列numberの中で最も大きい値を出す。 ループ数を合わせるのにmax(number)に1をプラス 従って上記のスクリプトでは、 fot i in range(10, 30+1): とループしていることになる。