# coding: utf-8 u""" テンプレートの抽出 記事中に含まれる「基礎情報」テンプレートのフィールド名と値を抽出し, 辞書オブジェクトとして格納せよ。 """ import ch03_01 import re text = ch03_01.extract('イギリス') pattern = re.compile( r''' ^\{\{基礎情報.*?$ # '{{基礎情報'で始まる行 (.*?) # キャプチャ対象、任意の0文字以上、非貪欲 ^\}\}$ # '}}'の行 ''', re.MULTILINE + re.VERBOSE + re.DOTALL) contents = pattern.findall(text) pattern = re.compile(r''' ^\|(.+?)\s*=\s*(.+?)(?:(?=\n\|)|(?=\n$)) ''', re.MULTILINE + re.VERBOSE + re.DOTALL) fields = pattern.findall(contents[0]) dic = {} for k, v in fields: dic[k] = v print(k, v)
# coding: utf-8 u""" セクション構造 記事中に含まれるセクション名とそのレベル(例えば"==セクション名=="なら1)を表示せよ。 """ import ch03_01 import re text = ch03_01.extract('イギリス').split('\n') pattern = r'^(={2,})\s*(.*?)\s*\1.*$' for line in text: true = re.search(pattern, line) if true is not None: print(len(true.group(1)) - 1, true.group(2))