2012年01月29日

辞書指定で複数置替え可能なreplaces()文字列置替関数

 Pythonには文字列メソッドreplace()がある。これはとても便利で1つ2つの置換文字列の指定程度なら何の問題もない。しかし、文字列メソッドreplace()には同時に置替部分文字列を一組しか指定出来ないので置替対象の部分文字列の数が多くなると、その回数分文字列を舐め回すことになり効率が悪い。複数の置替部分文字列の組合せを辞書で一括指定し文字列の先頭から一度のスキャンでreplace出来れば有用である。
 実際、この機能は前稿の中核関数であるzen_conv()に基本機能を内蔵しているので、以下の様に引数を調整するだけで作れてしまう。



def replaces(s, alt_dic={}, pass_list=[], mode='None', del_list=[], my_dic={}
, yen=u'¥', debug=0):
"""
複数の文字列の置替ペアの辞書指定して、文字列s上の合致部分を置替た文字列を返す関数
replaces( s : 標準関数replace(s, old, new)の様な文字列sの置替関数
, alt_dic : 上記のreplace()のoldをnewの対を辞書に指定(複数)
, pass_list : 変換しない領域の文字列をリスト内に指定
, mode=None : 必要により、z_conv()のmodeで置替辞書を指定
, del_list=[]: 置替辞書から除去する文字をlistで指定
, my_dic={} : 固有の置替辞書を指定
, yen=u'¥' : 「\」を「¥」(既定値)以外で置替えたい文字列を指定
, debug=0 ): 0:何もしない(既定値), 1以上:debugの為の情報表示あり
"""
return zen_conv(s, mode=mode, alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
 文字列メソッドreplace()との大きな差は関数という仕様の為、第一引数に文字列オブジェクトを指定することになること以外は、count引数がないことくらいだ。後はzen_conv()関数の残りの引数を既定値で埋めただけの仕様なので、必要により半角と全角の置替えも一度で処理出来る。実用例は次稿の関数all2int内で利用しているのでここでは割愛させて頂くが、前稿の/usr/lib/python2.6/site-packages/mire/jpcode.pyをInstallして頂き次の様にする。



from mire.jpcode import replaces
test_str = u'テスト文字列...'
print replaces(test_str, {u'置き換え':u'置換え', u'デフォルト値':u'既定値'})
 もし、半角カナを全角カナに同時に変更するなら、引数mode='han2kata'を追加指定するば同時に処理することが出来る。内部処理としては、辞書はhan2kataに追加され、テスト文字列を一文字ずつ読込み、その文字と頭文字が一致する辞書の要素がある場合に、その最大文字数の要素から全一致するものを探し、あれば辞書の値に置替えてその要素文字数だけ先に処理を進める方式なので効率は良い筈である。機会があれば利用頂ければ有難い。
posted by Mire at 13:27 | Comment(0) | TrackBack(0) | Pythonプログラミング | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/249163772
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
月額見放題1,000円開始キャンペーンバナー(画像ありver)
紺碧の艦隊 ルパン三世 GREAT CHASE クリックプロモーション
<< 2013年01月 >>
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
カテゴリ
タグクラウド
ファン
利用中のオープンソース
最近のコメント
最近の記事
過去ログ
QRコード
レガシーなアプリはいかが?
Dell 法人のお客様ページ
  • 【法人様向け】デル、お得なキャンペーン情報
  • 法人のお客様向け ストレージソリューション
  • 法人のお客様向け ネットワークソリューション
  • 【SOHO法人様向け】デル・オンライン広告限定ページ
  • デル-個人のお客様ページ
  • 【個人のお客様向け】デル・オンライン広告限定ページ
  • オンライン広告限定キャンペーンページ
  • ソフトウェア&周辺機器 パソコン工房
    ツートップインターネットショップ(twotop.co.jp) マウスコンピューター/G-Tune
  • ×

    この広告は1年以上新しい記事の投稿がないブログに表示されております。