ノート/Python
訪問者数 2942      最終更新 2013-05-12 (日) 09:15:09

青空文庫のふりがな(ルビ)を取り除きたい。ルビは「《」と「》」で囲まれている。

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

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

Pythonの正規表現と漢字

漢字でも正規表現が使える。但し1つだけフラグが必要。

参考

ふつうのASCII文字の場合

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

結果は

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

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


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-05-12 (日) 09:15:09 (1656d)