言語処理100本ノック(その7)
3章問22から
22. カテゴリ名の抽出
記事のカテゴリ名を(行単位ではなく名前で)抽出せよ.
import re from q20 import load_file split_text = load_file().splitlines() pattern = r"\[\[Category:(.*?)\]\]" repattern = re.compile(pattern) for t in split_text: match = repattern.match(t) if match: print(match[1])
(.*?)
で.*
にマッチしたものをmatch[1]で取り出して出力
実行結果
$ python 22.py イギリス|* 英連邦王国|* G8加盟国 欧州連合加盟国 海洋国家 君主国 島国|くれいとふりてん 1801年に設立された州・地域
参考
23. セクション構造
記事中に含まれるセクション名とそのレベル(例えば"== セクション名 =="なら1)を表示せよ.
import re from q20 import load_file split_text = load_file().splitlines() pattern = r"(={2,})\s*(.*?)\s*={2,}" repattern = re.compile(pattern) for t in split_text: match = repattern.match(t) if match: print(match[2] + ':' + str(len(match[1]) - 1))
(={2,})
: =が2以上でマッチ、match[1]で取り出せる\s*
: スペース(.*?)
: match[2]で取り出せる- マッチする行があれば、出力
実行結果
$ python 23.py 国名:1 歴史:1 地理:1 気候:2 政治:1 外交と軍事:1 地方行政区分:1 主要都市:2 科学技術:1 経済:1 鉱業:2 農業:2 貿易:2 通貨:2 企業:2 交通:1 道路:2 鉄道:2 海運:2 航空:2 通信:1 国民:1 言語:2 宗教:2 婚姻:2 教育:2 文化:1 食文化:2 文学:2 哲学:2 音楽:2 イギリスのポピュラー音楽:3 映画:2 コメディ:2 国花:2 世界遺産:2 祝祭日:2 スポーツ:1 サッカー:2 競馬:2 モータースポーツ:2 脚注:1 関連項目:1 外部リンク:1
参考
24. ファイル参照の抽出
記事から参照されているメディアファイルをすべて抜き出せ.
import re from q20 import load_file split_text = load_file().splitlines() pattern = r"\[\[File:(.*?)\|thumb" repattern = re.compile(pattern) for t in split_text: match = repattern.match(t) if match: print(match[1])
実行結果
$ python 24.py Battle of Waterloo 1815.PNG The British Empire.png Uk topo en.jpg BenNevis2005.jpg Elizabeth II greets NASA GSFC employees, May 8, 2007 edit.jpg Palace of Westminster, London - Feb 2007.jpg David Cameron and Barack Obama at the G20 Summit in Toronto.jpg Soldiers Trooping the Colour, 16th June 2007.jpg Scotland Parliament Holyrood.jpg London.bankofengland.arp.jpg City of London skyline from London City Hall - Oct 2008.jpg Oil platform in the North SeaPros.jpg Eurostar at St Pancras Jan 2008.jpg Heathrow T5.jpg Anglospeak.svg