![]() |
ノート/Python/漢字の正規表現http://pepper.is.sci.toho-u.ac.jp/pepper/index.php?%A5%CE%A1%BC%A5%C8%2FPython%2F%B4%C1%BB%FA%A4%CE%C0%B5%B5%AC%C9%BD%B8%BD |
![]() |
ノート/Python
訪問者数 3681 最終更新 2013-05-12 (日) 09:15:09
青空文庫のふりがな(ルビ)を取り除きたい。ルビは「《」と「》」で囲まれている。
私《わたくし》はその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。 これは世間を憚《はば》かる遠慮というよりも、その方が私にとって自然だからである。 私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。筆を執《と》っても心持は同じ事である。 よそよそしい頭文字《かしらもじ》などはとても使う気にならない。
これを取り除くのに、「正規表現」によるパタンマッチ・置き換えを使うことを考える。
漢字でも正規表現が使える。但し1つだけフラグが必要。
参考
r = re.compile('\([^)]*\)') s = 'abc(de)fg' news = r.sub('*', s) print s, '>', news
で
abc(de)fg > abc*fg
となる。
実際使ってみた。subを使って、《文字列》を*に置き換えてみる。
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import codecs import re sys.stdout = codecs.getwriter('utf_8')(sys.stdout) #r = re.compile('\([^)]*\)') r = re.compile(u'《[^》]*》') s = u'今日は良い天気《です》ね' #s = 'abc(de)fg' news = r.sub('*', s, re.U) print s, '>', news
結果は
今日は良い天気《です》ね > 今日は良い天気*ね
というわけで、うまく使える。