ハイファットマンの友人M

ハイファットマンはおともだちです。ほぼメモ

言語処理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