[[ノート/Python]]~
訪問者数 &counter();      最終更新 &lastmod();

青空文庫のふりがな(ルビ)を取り除きたい。ルビは「《」と「》」で囲まれている。
  私《わたくし》はその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。
 これは世間を憚《はば》かる遠慮というよりも、その方が私にとって自然だからである。
 私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。筆を執《と》っても心持は同じ事である。
 よそよそしい頭文字《かしらもじ》などはとても使う気にならない。

これを取り除くのに、「正規表現」によるパタンマッチ・置き換えを使うことを考える。

**Pythonの正規表現と漢字 [#h6f1303f]
漢字でも正規表現が使える。但し1つだけフラグが必要。

参考
-[[pythonの正規表現で日本語を扱う:http://taichino.com/programming/1272]]

***ふつうのASCII文字の場合 [#n0770a33]
 r = re.compile('\([^)]*\)')
 s = 'abc(de)fg'
 news = r.sub('*', s)
 print s, '>', news
で
 abc(de)fg > abc*fg

となる。

***漢字の場合 [#s1e798b3]
-正規表現のほうは、あまり凝らなくてもいいらしい。但しu'  'は必要。
-実際に作用させるときに、最後にunicodeだよというフラッグ re.U が必要。

実際使ってみた
実際使ってみた。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

結果は
 今日は良い天気《です》ね > 今日は良い天気*ね

というわけで、うまく使える。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS