分かりにくいタイトルだけど。
1つのファイル内に同じパターンにマッチする箇所が複数ある場合に、
個々の箇所でデータを名前つきグループ化して抽出したい場合に使える。
例えば、HTMLファイルの中からテーブルの各行から個々の列の値を取り出す時とか。
パターンの例
<tr>
<td>(?P<name>.*)</td>
<td>(?P<owner>.*)</td>
<td>(?P<zip>.*)</td>
<td>(?P<address>.*)</td>
<td>(?P<tel>.*)</td>
<td>(?P<fax>.*)</td>
</tr>
コードの例
SOURCE_FILE = "./test_source.html" PATTERN_FILE = "./test_pattern.html" OUTPUT_FILE = "./test_output.html" COLUMNS = [ "name", "owner", "zip", "address", "tel", "fax", ] import re def main(): pattern_data = open(PATTERN_FILE).read() source_data = open(SOURCE_FILE).read() p = re.compile(pattern_data) f = open(OUTPUT_FILE, "w") for m in p.finditer(source_data): if m: d = m.groupdict() f.write(",".join([d[name] for name in COLUMNS if d.has_key(name)])) f.write("\n") f.close() print "%s saved." % OUTPUT_FILE if __name__ == "__main__": main()