2012年02月03日

【Unicode】半角カナ全角かな置替関数0.2.7 for Python

 前稿の「文書内の全数字を算用数字表現: all2int(), str2int()」では、まだ不正処理の例外について詰めがなされていないものの、取り敢えず、文書内の数字を全て半角算用数字に置替える能力を持たせることが出来た。前稿では、漢数字に焦点を当てた処理だったが、世界には、漢数字以外に言語別に多数の数字が存在する。例えば、日頃PCで使う半角算用数字のことをアラビア数字ともいうが、実際のアラビア文化圏の数字はこれとは異なりあくまで欧州から見て、元々アラビアから輸入した文字を起源とすることから、そう呼ばれているに過ぎない。
 調べてみると、なかなか面白い。やはり、0を発見した多言語のインド文化圏を中心にちょいめには数字とは判らない数字が多く存在する。現代社会では、如何にも西欧文明が頂点を極めたかの様に欧州視点での記述で物事を認識しがちだが、数学はインド文化圏からイスラム文化圏にそして西欧のキリスト教文化圏に移入されることで、ニュートン等のキーパーソンによる発展と産業力が結び付くことで、その様に西欧文化が世界的に突出し一見普遍化したに過ぎない。
 西欧から遠い日本の和算でも微分に近いことはほぼ同時期になされいたのであり、インドイスラム由来の数字が独自の変化をとげ多数存在することは当然と言えば当然のことである。

 本稿では、イスラム圏であるペルシャ数字、アラビア・インド数字やタイ、ラオス、ビルマ等の東南アジア文化圏の数字をWikipedia等で調べ記載させて頂いた。

 ソースコードは末尾に掲載しているが、今回の拡張部分のテスト実行の結果は以下の通りだ。



[mire@localhost ~]$ python jpcode_0_2_6.py

>>>diff(test, dev2num(test))
20.デーヴァナーガリー数字を数へ
- #デーヴァナーガリー数字: '०१२३४५६७८९'
+ #デーヴァナーガリー数字: '0123456789'

>>>diff(test, num2dev(test))
21.数をデーヴァナーガリー数字へ
- #半角算用数字 : '0123456789'
+ #半角算用数字 : '०१२३४५६७८९'

>>>diff(test, per2num(test))
22.ペルシア数字を半角算用数字へ
- #ペルシア数字 : '۰۱۲۳۴۵۶۷۸۹'
+ #ペルシア数字 : '0123456789'

>>>diff(test, num2per(test))
23.半角算用数字をペルシア数字へ
- #半角算用数字 : '0123456789'
+ #半角算用数字 : '۰۱۲۳۴۵۶۷۸۹'

>>>diff(test, ara2num(test))
24.アラビア・インド数字を数字へ
- #アラビア・インド数字 : '٠١٢٣٤٥٦٧٨٩'
+ #アラビア・インド数字 : '0123456789'

>>>diff(test, num2ara(test))
25.数字をアラビア・インド数字へ
- #半角算用数字 : '0123456789'
+ #半角算用数字 : '٠١٢٣٤٥٦٧٨٩'

>>>diff(test, guj2num(test))
26.グジャラーティー数字を数字へ
- #グジャラーティー数字 : '૦૧૨૩૪૫૬૭૮૯'
+ #グジャラーティー数字 : '0123456789'

>>>diff(test, num2guj(test))
27.数字をグジャラーティー数字へ
- #半角算用数字 : '0123456789'
+ #半角算用数字 : '૦૧૨૩૪૫૬૭૮૯'

>>>diff(test, gur2num(test))
28.グルムキー数字 を 半角数字へ
- #グルムキー数字 : '੦੧੨੩੪੫੬੭੮੯'
+ #グルムキー数字 : '0123456789'

>>>diff(test, num2gur(test))
29.半角数字 を グルムキー数字へ
- #半角算用数字 : '0123456789'
+ #半角算用数字 : '੦੧੨੩੪੫੬੭੮੯'

>>>diff(test, tel2num(test))
30.テルグ数字 を 半角算用数字へ
- #テルグ数字 : '౦౧౨౩౪౫౬౭౮౯'
+ #テルグ数字 : '0123456789'

>>>diff(test, num2tel(test))
31.半角算用数字 を テルグ数字へ
- #半角算用数字 : '0123456789'
+ #半角算用数字 : '౦౧౨౩౪౫౬౭౮౯'

>>>diff(test, kan2num(test))
32.カンナダ数字を半角算用数字へ
- #カンナダ数字 : '೦೧೨೩೪೫೬೭೮೯'
+ #カンナダ数字 : '0123456789'

>>>diff(test, num2kan(test))
33.半角算用数字をカンナダ数字へ
- #半角算用数字 : '0123456789'
+ #半角算用数字 : '೦೧೨೩೪೫೬೭೮೯'

>>>diff(test, mal2num(test))
34.マラヤーラム数字を半角数字へ
- #マラヤーラム文字 : '൦൧൨൩൪൫൬൭൮൯'
+ #マラヤーラム文字 : '0123456789'

>>>diff(test, num2mal(test))
35.半角数字をマラヤーラム数字へ
- #半角算用数字 : '0123456789'
+ #半角算用数字 : '൦൧൨൩൪൫൬൭൮൯'

>>>diff(test, tam3num(test))
36.タミル数字 を 半角算用数字へ
- #タミル数字 : '௦௧௨௩௪௫௬௭௮'
+ #タミル数字 : '012345678'

>>>diff(test, num2tam(test))
37.半角算用数字 を タミル数字へ
- #半角算用数字 : '0123456789'
+ #半角算用数字 : '௦௧௨௩௪௫௬௭௮௯'

>>>diff(test, ban2num(test))
38.ベンガル数字を半角算用数字へ
- #ベンガル数字 : '০১২৩৪৫৬৭৮৯'
+ #ベンガル数字 : '0123456789'

>>>diff(test, num2ban(test))
39.半角算用数字をベンガル数字へ
- #半角算用数字 : '0123456789'
+ #半角算用数字 : '০১২৩৪৫৬৭৮৯'

>>>diff(test, ori2num(test))
40.オリヤー数字を半角算用数字へ
- #オリヤー数字 : '୦୧୨୩୪୫୬୭୮୯'
+ #オリヤー数字 : '0123456789'

>>>diff(test, num2ori(test))
41.半角算用数字をオリヤー数字へ
- #半角算用数字 : '0123456789'
+ #半角算用数字 : '୦୧୨୩୪୫୬୭୮୯'

>>>diff(test, bur2num(test))
42.ビルマ数字 を 半角算用数字へ
- #ビルマ数字 : '၀၁၂၃၄၅၆၇၈၉'
+ #ビルマ数字 : '0123456789'

>>>diff(test, num2bur(test))
43.半角算用数字 を ビルマ数字へ
- #半角算用数字 : '0123456789'
+ #半角算用数字 : '၀၁၂၃၄၅၆၇၈၉'

>>>diff(test, khm2num(test))
44.クメール数字を半角算用数字へ
- #クメール数字 : '០១២៣៤៥៦៧៨៩'
+ #クメール数字 : '0123456789'

>>>diff(test, num2khm(test))
45.半角算用数字をクメール数字へ
- #半角算用数字 : '0123456789'
+ #半角算用数字 : '០១២៣៤៥៦៧៨៩'

>>>diff(test, tha2num(test))
46.タイ数字 を 半角算用数字へ
- #タイ数字 : '๐๑๒๓๔๕๖๗๘๙'
+ #タイ数字 : '0123456789'

>>>diff(test, num2tha(test))
47.半角算用数字 を タイ数字へ

>>>diff(test, lao2num(test))
48.ラーオ数字 を 半角算用数字へ
- #ラーオ数字 : '໐໑໒໓໔໕໖໗໘໙'
+ #ラーオ数字 : '0123456789'

>>>diff(test, num2lao(test))
49.半角算用数字 を ラーオ数字へ
- #半角算用数字 : '0123456789'
+ #半角算用数字 : '໐໑໒໓໔໕໖໗໘໙'

>>>diff(test, tib2num(test))
50.チベット数字を半角算用数字へ
- #チベット数字 : '༠༡༢༣༤༥༦༧༨༩'
+ #チベット数字 : '0123456789'

>>>diff(test, num2tib(test))
51.半角算用数字をチベット数字へ
- #半角算用数字 : '0123456789'
+ #半角算用数字 : '༠༡༢༣༤༥༦༧༨༩'
>>>print all2int(test)

#全数字文字を含む文字列: '拾百千万億兆京垓予穣溝潤正'
#全数字文字を含む文字列: '零千壱正弐潤参溝四穣五予六垓七京八兆九億壱万弐千参百四拾五'
#半角算用数字 : '0123456789'
#全角算用数字 : '0123456789'
#全角漢数字 : '〇一二三四五六七八九'
#全角漢数字(大字) : '〇壱弐参零壹貮貳參肆伍陸柒漆質捌玖'
#全角漢数字(大字) : '零壹贰貳叁參肆伍陆陸柒柒漆捌玖'
#デーヴァナーガリー数字: '०१२३४५६७८९'
#ペルシア数字 : '۰۱۲۳۴۵۶۷۸۹'
#アラビア・インド数字 : '٠١٢٣٤٥٦٧٨٩'
#グジャラーティー数字 : '૦૧૨૩૪૫૬૭૮૯'
#グルムキー数字 : '੦੧੨੩੪੫੬੭੮੯'
#テルグ数字 : '౦౧౨౩౪౫౬౭౮౯'
#カンナダ数字 : '೦೧೨೩೪೫೬೭೮೯'
#マラヤーラム文字 : '൦൧൨൩൪൫൬൭൮൯'
#タミル数字 : '௦௧௨௩௪௫௬௭௮௯'
#ベンガル数字 : '০১২৩৪৫৬৭৮৯'
#オリヤー数字 : '୦୧୨୩୪୫୬୭୮୯'
#ビルマ数字 : '၀၁၂၃၄၅၆၇၈၉'
#クメール数字 : '០១២៣៤៥៦៧៨៩'
#タイ数字 : '๐๑๒๓๔๕๖๗๘๙'
#ラーオ数字 : '໐໑໒໓໔໕໖໗໘໙'
#チベット数字 : '༠༡༢༣༤༥༦༧༨༩'

文中の数字を整数で表示

#全数字文字を含む文字列: '100000'
#全数字文字を含む文字列: '10002000300040005000600070008000900012345'
#半角算用数字 : '123456789'
#全角算用数字 : '123456789'
#全角漢数字 : '123456789'
#全角漢数字(大字) : '1230122345677789'
#全角漢数字(大字) : '12233456677789'
#デーヴァナーガリー数字: '123456789'
#ペルシア数字 : '123456789'
#アラビア・インド数字 : '123456789'
#グジャラーティー数字 : '123456789'
#グルムキー数字 : '123456789'
#テルグ数字 : '123456789'
#カンナダ数字 : '123456789'
#マラヤーラム文字 : '123456789'
#タミル数字 : '123456789'
#ベンガル数字 : '123456789'
#オリヤー数字 : '123456789'
#ビルマ数字 : '123456789'
#クメール数字 : '123456789'
#タイ数字 : '123456789'
#ラーオ数字 : '123456789'
#チベット数字 : '123456789'

[mire@localhost ~]$

 実を言うと、このソースコードは「【Unicode】半角カナ全角かな置替関数 for Python(正式公開版)」のソースに上書きする予定だったが、ここ迄長いソースになると書込み出来なかったので、仕方なく新規の投稿での全コード掲載とさせて頂いた。
            /usr/lib/python2.6/site-packages/mire/jcode.py(前半)


#!/usr/loca/bin/python2.6
# -*- coding: utf-8 -*-
"""
######################################################################
# replacement of japanese full and half pitch characters
# 全角/半角仮名ASCII文字置替
# 1. zen_conv( s : 文字列s内の半角/全角カナASCII文字の置替え
# , mode : None = 設定なし
# : 'han2kata' = 1.半角カタカナを全角カタカナへ(既定値)
# : 'kata2han' = 2.全角カタカナを半角カタカナへ
# : 'han2hira' = 3.半角カタカナを全角ひらがなへ
# : 'hira2han' = 4.全角ひらがなを半角カタカナへ
# : 'asc2zen' = 5.半角英数記号を全角英数記号へ
# : 'zen2asc' = 6.全角英数記号を半角英数記号へ
# : 'han2zen' = 7.半角カタカナ英数記号を全角へ
# : 'zen2han' = 8.全角仮名文字英数記号を半角へ
# : 'kata2hira' = 9.全角カタカナを全角ひらがなへ
# : 'hira2kata' =10.全角ひらがなを全角カタカナへ
# : 'kana2han' =11.全角平片仮名を半角カタカナへ
# : 'num2zen' =12.半角算用数字を全角算用数字へ
# : 'num2han' =13.全角算用数字を半角算用数字へ
# : 'num2knm' =14.半角算用数字を普通の漢数字へ
# : 'knm2num' =15.普通の漢数字を半角算用数字へ
# : 'num2dai' =16.半角算用数字を大字表記数字へ
# : 'dai2num' =17.大字表記数字を半角算用数字へ
# : 'knm2dai' =18.普通の漢数字を大字表記数字へ
# : 'dai2knm' =19.大字表記数字を普通の漢数字へ
# : 'dev2num' :20.デーヴァナーガリー数字を数へ
# : 'num2dev' :21.数をデーヴァナーガリー数字へ
# : 'per2num' :22.ペルシア数字を半角算用数字へ
# : 'num2per' :23.半角算用数字をペルシア数字へ
# : 'ara2num' :24.アラビア・インド数字を数字へ
# : 'num2ara' :25.数字をアラビア・インド数字へ
# : 'guj2num' :26.グジャラーティー数字を数字へ
# : 'num2guj' :27.数字をグジャラーティー数字へ
# : 'gur2num' :28.グルムキー数字 を 半角数字へ
# : 'num2gur' :29.半角数字 を グルムキー数字へ
# : 'tel2num' :30.テルグ数字 を 半角算用数字へ
# : 'num2tel' :31.半角算用数字 を テルグ数字へ
# : 'kan2num' :32.カンナダ数字を半角算用数字へ
# : 'num2kan' :33.半角算用数字をカンナダ数字へ
# : 'mal2num' :34.マラヤーラム数字を半角数字へ
# : 'num2mal' :35.半角数字をマラヤーラム数字へ
# : 'tam3num' :36.タミル数字 を 半角算用数字へ
# : 'num2tam' :37.半角算用数字 を タミル数字へ
# : 'ban2num' :38.ベンガル数字を半角算用数字へ
# : 'num2ban' :39.半角算用数字をベンガル数字へ
# : 'ori2num' :40.オリヤー数字を半角算用数字へ
# : 'num2ori' :41.半角算用数字をオリヤー数字へ
# : 'bur2num' :42.ビルマ数字 を 半角算用数字へ
# : 'num2bur' :43.半角算用数字 を ビルマ数字へ
# : 'khm2num' :44.クメール数字を半角算用数字へ
# : 'num2khm' :45.半角算用数字をクメール数字へ
# : 'tha2num' :46.タイ数字 を 半角算用数字へ
# : 'num2tha' :47.半角算用数字 を タイ数字へ
# : 'lao2num' :48.ラーオ数字 を 半角算用数字へ
# : 'num2lao' :49.半角算用数字 を ラーオ数字へ
# : 'tib2num' :50.チベット数字を半角算用数字へ
# : 'num2tib' :51.半角算用数字をチベット数字へ
# : ※これ以外の指定は'han2kata'の全角カタカナへとなる
# , yen : 「\」を「¥」(既定値)以外で置替えたい文字列を指定
# : 例: 「\」に置替えなら、yen=u'\'
# : 置替えしないなら、 yen=None とする
# , alt_dic : 置替辞書へmap修正追加するものを辞書で指定
# : 例: 矢印を半角文字で表現, 全角スペースを半角2つに置替え
# : alt_dic={u'⇒':'=>', u' ':' '}
# , del_list : 置替辞書から除去する文字をlistで指定
# , my_dic : 固有の置替辞書を指定
# , pass_list: 置替除外する部分をlistで指定
# , debug) : 0:何もしない(既定値), 1以上:debugの為の情報表示あり
# modeの命名規則 : 全角ひらがな=hira, 全角カタカナ=kata, 半角=han, 全角=zen
# , ' to '='2', 半角英数記号(ascii)=asc, 半角算用数字=num
# , 普通の漢数字=knm, 大字表記数字=dai
# ※ 全て置替用辞書に依存し置替する仕組み。正順一致で置替える
#
# 2.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の為の情報表示あり
#
# 3.モード別関数(関数名のmodeを既定で指定済, zen_conv()関数の全引数の指定が可能)
# 半角カタカナを全角カタカナへ: han2kata() 全角カタカナを半角カタカナへ: kata2han()
# 半角カタカナを全角ひらがなへ: han2hira() 全角ひらがなを半角カタカナへ: hira2han()
# 半角英数記号を全角英数記号へ: asc2zen() 全角英数記号を半角英数記号へ: zen2asc()
# 半角カタカナ英数記号を全角へ: han2zen() 全角カタカナ英数記号を半角へ: zen2han()
# 全角カタカナを全角ひらがなへ: kata2hira() 全角ひらがなを全角カタカナへ: hira2kata()
# 全角平片仮名を半角カタカナへ: kana2han()
# 半角算用数字を全角算用数字へ: num2zen() 全角算用数字を半角算用数字へ: num2han()
# 半角算用数字を普通の漢数字へ: num2knm() 普通の漢数字を半角算用数字へ: knm2num()
# 半角算用数字を大字表記数字へ: num2dai() 大字表記数字を半角算用数字へ: dai2num()
# 普通の漢数字を大字表記数字へ: knm2dai() 大字表記数字を普通の漢数字へ: dai2knm()
# デーヴァナーガリー数字を数へ: dev2num() 数をデーヴァナーガリー数字へ: num2dev()
# ペルシア数字を半角算用数字へ: per2num() 半角算用数字をペルシア数字へ: num2per()
# アラビア・インド数字を数字へ: ara2num() 数字をアラビア・インド数字へ: num2ara()
# グジャラーティー数字を数字へ: guj2num() 数字をグジャラーティー数字へ: num2guj()
# グルムキー数字 を 半角数字へ: gur2num() 半角数字 を グルムキー数字へ: num2gur()
# テルグ数字 を 半角算用数字へ: tel2num() 半角算用数字 を テルグ数字へ: num2tel()
# カンナダ数字を半角算用数字へ: kan2num() 半角算用数字をカンナダ数字へ: num2kan()
# マラヤーラム数字を半角数字へ: mal2num() 半角数字をマラヤーラム数字へ: num2mal()
# タミル数字 を 半角算用数字へ: tam3num() 半角算用数字 を タミル数字へ: num2tam()
# ベンガル数字を半角算用数字へ: ban2num() 半角算用数字をベンガル数字へ: num2ban()
# オリヤー数字を半角算用数字へ: ori2num() 半角算用数字をオリヤー数字へ: num2ori()
# ビルマ数字 を 半角算用数字へ: bur2num() 半角算用数字 を ビルマ数字へ: num2bur()
# クメール数字を半角算用数字へ: khm2num() 半角算用数字をクメール数字へ: num2khm()
# タイ数字 を 半角算用数字へ: tha2num() 半角算用数字 を タイ数字へ: num2tha()
# ラーオ数字 を 半角算用数字へ: lao2num() 半角算用数字 を ラーオ数字へ: num2lao()
# チベット数字を半角算用数字へ: tib2num() 半角算用数字をチベット数字へ: num2tib()
#
# 4.数字文字置替関数
# str2int(s) : 漢数字全角数字含めた数字を整数値化
# all2int(s) : 文字列内の数字を算用数字の整数に置替え

#【更新履歴】
# 2010-05-05 0.0.0  kana2zen()として半角カナを全角のカタカナひらがなへの
# 置替機能及び、そのテストコードを公開
# 2010-05-06 0.0.1  半角への逆置替が欲しくなったので機能拡張し、kana_conv()
# としたdebug時に参照辞書の一部を確認可能にし、指定ミスを
# 発見し易くした長音記号等漏れ等の誤りを補正。多分精度的には
# まだα1クラス。
# 2012-01-13 0.0.1a  通りすがりさんご指摘の'け''ケ'のマッピングミスを修正
# 2012-01-14 0.0.2  この__DOC__のmode名hiraをhan2hiraに変更、その他も改変
# ※0.0.1a以前と非互換。今後は新命名規則でmode名を決定
# 2012-01-15 0.1.0  全角英数記号文字の半角置替をzen2han、その逆をhan2zen
# として追加半角英数記号の全角置替をasc2zen、その逆をzen2asc
# として追加し、関数名をzen_conv()に変更
# 2012-01-16 0.1.0a  引数 yen, alt_dic, del_list, my_dic を追加し個別用途の
# 置替需要に応える様に拡張開始
# 2012-01-16 0.1.1  alt_dic で追加したものに濁点半濁点が処理出来ない不具合解消
# 2012-01-19 0.1.2  利用時タイプの冗長性を軽減の為、mode別関数を作成展開
# 2012-01-22 0.1.2a  コード整理に伴なう軽微な修正とclean up
# 2012-01-22 0.2.0  置替え処理を文字列の頭から正順処理する様に修正(100行→40行)
# 置替文字数上限をなくした。逆順処理はコメント化
# 2012-01-23 0.2.1  辞書との比較を頭文字から始まる文字数分の部分文字列に変更により
# 同一頭文字の多キー存在時のループ回数を低減
# 2012-01-23 0.2.2  pass_listでキー文字列と同じ値の辞書要素を登録し一致分は
# 変更しない様にすることで置替除外箇所の指定を可能にし汎用性を向上
# 2012-01-25 0.2.3  置替用辞書として半角数字と全角数字間置替えするものを追加すると共に
# 置替辞書なしを文字列'None'で指定可能にし、単純な文字列置替関数としての
# 用途にも可能なより汎用的仕様に変更
# 2012-01-26 0.2.4 一般受け狙い?(笑)の汎用関数replaces()追加
# 2012-01-28 0.2.5 整数文字列の整数化関数str2int()の追加
# 2012-01-29 0.2.6 文字列内の整数文字列の算用数字化関数all2int()の追加
# 2012-02-03 0.2.7 アジア地域言語の数文字を追加
#
#【判っている課題】
# my_dic: 著者未使用の為、利用の成否は未確認。
# 数字置替系関数は単純な数字文字間の置替えのみサポート。
# 文字列中の小数点付数字は未対応
# clean up不足 sorry
"""
__author__ = "Mire in Japan"
__date__ = "2012-02-03"
__version__ = '0.2.7'
__copyright__ = 'Copyright (c) 2010-2012 Mire'
__license__ = 'GPL'
__url__ = 'http://pythonlife.seesaa.net/article/247825731.htm '

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)

allknum = u''

def han2kata(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角カタカナを全角カタカナへ"""
return zen_conv(s, mode='han2kata', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def kata2han(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""全角カタカナを半角カタカナへ"""
return zen_conv(s, mode='kata2han', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def han2hira(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角カタカナを全角ひらがなへ"""
return zen_conv(s, mode='han2hira', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def hira2han(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""全角ひらがなを半角カタカナへ"""
return zen_conv(s, mode='hira2han', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def asc2zen(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角英数記号を全角英数記号へ"""
return zen_conv(s, mode='asc2zen', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def zen2asc(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""全角英数記号を半角英数記号へ"""
return zen_conv(s, mode='zen2asc', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def han2zen(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角カタカナ英数記号を全角へ"""
return zen_conv(s, mode='han2zen', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def zen2han(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""全角仮名文字英数記号を半角へ"""
return zen_conv(s, mode='zen2han', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def kata2hira(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""全角カタカナを全角ひらがなへ"""
return zen_conv(s, mode='kata2hira', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def hira2kata(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""全角ひらがなを全角カタカナへ"""
return zen_conv(s, mode='hira2kata', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def kana2han(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""全角平片仮名を半角カタカナへ"""
return zen_conv(s, mode='kana2han', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def num2zen(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角算用数字を全角算用数字へ"""
return zen_conv(s, mode='num2zen', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def num2han(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""全角算用数字を半角算用数字へ"""
return zen_conv(s, mode='num2han', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def num2knm(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角算用数字を普通の漢数字へ"""
return zen_conv(s, mode='num2knm', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def knm2num(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""普通の漢数字を半角算用数字へ"""
return zen_conv(s, mode='knm2num', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def knm2dai(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""普通の漢数字を大字表記数字へ"""
return zen_conv(s, mode='knm2dai', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def dai2knm(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""大字表記数字を普通の漢数字へ"""
return zen_conv(s, mode='dai2knm', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def num2dai(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""普通の漢数字を大字表記数字へ"""
return zen_conv(s, mode='num2dai', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def dai2num(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""大字表記数字を普通の漢数字へ"""
return zen_conv(s, mode='dai2num', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

            /usr/lib/python2.6/site-packages/mire/jcode.py(後半)


def dev2num(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""デーヴァナーガリー数字を数へ"""
return zen_conv(s, mode='dev2num', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def num2dev(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""数をデーヴァナーガリー数字へ"""
return zen_conv(s, mode='num2dev', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def per2num(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""ペルシア数字を半角算用数字へ"""
return zen_conv(s, mode='per2num', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def num2per(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角算用数字をペルシア数字へ"""
return zen_conv(s, mode='num2per', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def ara2num(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""アラビア・インド数字を数字へ"""
return zen_conv(s, mode='ara2num', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def num2ara(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""数字をアラビア・インド数字へ"""
return zen_conv(s, mode='num2ara', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def guj2num(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""グジャラーティー数字を数字へ"""
return zen_conv(s, mode='guj2num', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def num2guj(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""数字をグジャラーティー数字へ"""
return zen_conv(s, mode='num2guj', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def gur2num(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""グルムキー数字 を 半角数字へ"""
return zen_conv(s, mode='gur2num', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def num2gur(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角数字 を グルムキー数字へ"""
return zen_conv(s, mode='num2gur', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def tel2num(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""テルグ数字 を 半角算用数字へ"""
return zen_conv(s, mode='tel2num', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def num2tel(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角算用数字 を テルグ数字へ"""
return zen_conv(s, mode='num2tel', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def kan2num(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""カンナダ数字を半角算用数字へ"""
return zen_conv(s, mode='kan2num', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def num2kan(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角算用数字をカンナダ数字へ"""
return zen_conv(s, mode='num2kan', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def mal2num(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""マラヤーラム数字を半角数字へ"""
return zen_conv(s, mode='mal2num', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def num2mal(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角数字をマラヤーラム数字へ"""
return zen_conv(s, mode='num2mal', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def tam3num(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""タミル数字 を 半角算用数字へ"""
return zen_conv(s, mode='tam3num', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def num2tam(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角算用数字 を タミル数字へ"""
return zen_conv(s, mode='num2tam', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def ban2num(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""ベンガル数字を半角算用数字へ"""
return zen_conv(s, mode='ban2num', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def num2ban(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角算用数字をベンガル数字"""
return zen_conv(s, mode='num2ban', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def ori2num(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""オリヤー数字を半角算用数字へ"""
return zen_conv(s, mode='ori2num', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def num2ori(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角算用数字をオリヤー数字へ"""
return zen_conv(s, mode='num2ori', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def bur2num(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""ビルマ数字 を 半角算用数字へ"""
return zen_conv(s, mode='bur2num', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def num2bur(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角算用数字 を ビルマ数字へ"""
return zen_conv(s, mode='num2bur', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def khm2num(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""クメール数字を半角算用数字へ"""
return zen_conv(s, mode='khm2num', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def num2khm(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角算用数字をクメール数字へ"""
return zen_conv(s, mode='num2khm', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def tha2num(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""タイ数字 を 半角算用数字へ"""
return zen_conv(s, mode='tha2num', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def num2tha(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角算用数字 を タイ数字へ"""
return zen_conv(s, mode='', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def lao2num(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""ラーオ数字 を 半角算用数字へ"""
return zen_conv(s, mode='lao2num', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def num2lao(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角算用数字 を ラーオ数字へ"""
return zen_conv(s, mode='num2lao', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def tib2num(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""チベット数字を半角算用数字へ"""
return zen_conv(s, mode='tib2num', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)
def num2tib(s, alt_dic={}, del_list=[], yen=u'¥', pass_list=[]
, my_dic={}, debug=0):
"""半角算用数字をチベット数字へ"""
return zen_conv(s, mode='num2tib', alt_dic=alt_dic, del_list=del_list
, pass_list=pass_list, yen=yen, my_dic=my_dic, debug=debug)

def all2int(s, add_chars=u'', del_chars=u''):
"""数を表す全数字を算用数字に置替え"""
from re import compile, findall #正規表現でパターンに合致する文字列抽出するメソッドをimport
all_num = (u'拾百千万億兆京垓予穣溝潤正' #全数字文字を含む文字列
+ u'01234567890123456789〇一二三四五六七八九'
+ u'〇壱弐参零壹貮貳參肆伍陸柒漆質捌玖零壹贰貳叁參肆伍陆陸柒柒漆捌玖'
+ u'०१२३४५६७८९۰۱۲۳۴۵۶۷۸۹٠١٢٣٤٥٦٧٨٩' #デーヴァナーガリー数字, #ペルシア数字, #アラビア・インド数字
+ u'૦૧૨૩૪૫૬૭૮૯੦੧੨੩੪੫੬੭੮੯౦౧౨౩౪౫౬౭౮౯' #グジャラーティー数字, #グルムキー数字, #テルグ数字
+ u'೦೧೨೩೪೫೬೭೮೯൦൧൨൩൪൫൬൭൮൯௦௧௨௩௪௫௬௭௮௯' #カンナダ数字, #マラヤーラム文字, #タミル数字
+ u'০১২৩৪৫৬৭৮৯୦୧୨୩୪୫୬୭୮୯၀၁၂၃၄၅၆၇၈၉' #ベンガル数字, #オリヤー数字, #ビルマ数字
+ u'០១២៣៤៥៦៧៨៩๐๑๒๓๔๕๖๗๘๙' #クメール数字, #タイ数字
+ u'໐໑໒໓໔໕໖໗໘໙༠༡༢༣༤༥༦༧༨༩') #ラーオ数字, #チベット数字
num_strs = list(set(list(all_num+add_chars))) #ユーザ追加の数字を追加し重複を取り除いたlistから
for d in del_chars: #ユーザ除去の数字を取り除いて
num_strs.sremove(d)
num_strs.sort()
are_nums = compile(u'[%s]+'
% (u''.join(num_strs))) #正規表現パターンをコンパイルして
nums = are_nums.findall(s) #
pat_dic = {}
for i in nums:
pat_dic[i] = u'%d' % (str2int(i))
return replaces(s, pat_dic)

def str2int(s
, piriod=['.'] #小数点:[u'.', u'・', u'٫', u'・'] #未使用
, comma=[','] #桁区切:[u',', u'٬', u',', u' ', u'.', u'、']
, prefix=[] #接頭文字列:[u'金', u'¥'] #未使用
, suffix=[] #接尾文字列:[u'円也', u'※'] #未使用
, alt_kurai_dic={}
, del_kurai_list=[]
):
"""
漢数字、全角数字、半角数字文字列の整数化
【仕様】
1. 拾, 百, 千, 万, 億等が数字の頭にあるときは頭の一が省略されたものと看做す
2. 数字でない余計な文字を含まないこと(現在は、含むと単にpassする)
「、・」等をはさんでいる場合の解釈をどうするか詰めてから対処の予定
3.  大数の扱いは現在、恒河沙迄は万進だが、歴史上は万万進のこともあったので適用文字列により
補正する必要がある。
4.  漢字文化圏には整数の大数だけでなく少数以下を表す以下の様な少数もある。
分、厘、毛、糸、忽、微、繊、沙、塵、埃、渺、漠、模糊、逡巡、須臾、瞬息、弾指、
刹那、六徳、虚空、清浄、阿頼耶、阿摩羅、涅槃寂静
5.  今後、1千億2千3百4拾5兆の様な一意に解釈可能なものも整数化出来る様にしたい。
その為、何桁から万進或いは万万進にするかの引数を設けることになる。
"""
#千以下の大数: 相対位の刻み(十進)
kizami_dic = {u'拾':10 # 1十(じゅう)
, u'百':100 # 2百(ひゃく)
, u'陌':100
, u'佰':100
, u'千':1000 # 3千(せん)
, u'阡':1000
, u'仟':1000}
#万以上の大数: 絶対位(万進)
kurai_dic = { u'万' :10000 # 4万(まん)
, u'萬' :10000
, u'億' :100000000 # 8億(おく)
, u'兆' :1000000000000 #12兆(ちょう)
, u'京' :10000000000000000 #16京(けい)
, u'垓' :100000000000000000000 #20垓(がい)
, u'𥝱' :1000000000000000000000000 #24𥝱(じょ)
, u'予' :1000000000000000000000000
, u'秭' :1000000000000000000000000 #24秭(し)
, u'穣' :10000000000000000000000000000 #28穣(じょう)
, u'溝' :100000000000000000000000000000000 #32溝(こう)
, u'潤' :1000000000000000000000000000000000000 #36潤(かん)
, u'正' :10000000000000000000000000000000000000000 #40正(せい)
, u'載' :100000000000000000000000000000000000000000000 #44載(さい)
, u'極' :1000000000000000000000000000000000000000000000000 #48極(ごく)
, u'恒河沙':10000000000000000000000000000000000000000000000000000 #52恒河沙(ごうがしゃ)
#以降(今回省略)は万万進となる。数字的には1垓を1億兆とも言い表せることには要注意。
#また歴史的にはこの様に各大数の意味を億=万万進で表していたこともある。
#汎用性を考えるなら現状の万進固定では役に立たない場合が出てしまう。
}
# 10進数の数字0〜9に当たる全文字に対する整数値の辞書
knum_dic = { '0':0, '1':1, '2':2, '3':3, '4':4
, '5':5, '6':6, '7':7, '8':8, '9':9
, u'0':0, u'1':1, u'2':2, u'3':3, u'4':4
, u'5':5, u'6':6, u'7':7, u'8':8, u'9':9
, u'〇':0, u'一':1, u'二':2, u'三':3, u'四':4 #漢数字
, u'五':5, u'六':6, u'七':7, u'八':8, u'九':9
, u'〇':0, u'壱':1, u'弐':2, u'参':3
, u'零':0, u'壹':1, u'貮':2, u'貳':2, u'參':3 #日本の旧大字
, u'肆':4, u'伍':5, u'陸':6, u'柒':7, u'漆':7
, u'質':7, u'捌':8, u'玖':9
, u'零':0, u'壹':1, u'贰':2, u'貳':2, u'叁':3, u'參':3 #中国の大字
, u'肆':4, u'伍':5, u'陆':6, u'陸':6
, u'柒':7, u'柒':7, u'漆':7, u'捌':8, u'玖':9


, u'०':0, u'१':1, u'२':2, u'३':3, u'४':4 #デーヴァナーガリー数字(ヒンディー語、マラーティー語、ネパール語
, u'५':5, u'६':6, u'७':7, u'८':8, u'९':9 #古典言語サンスクリット、プラークリット)
#ペルシア数字(ペルシア語)
, u'۰':0, u'۱':1, u'۲':2, u'۳':3, u'۴':4
, u'۵':5, u'۶':6, u'۷':7, u'۸':8, u'۹':9
#アラビア・インド数字
, u'٠':0, u'١':1 , u'٢':2, u'٣':3, u'٤':4
, u'٥':5, u'٦':6 , u'٧':7, u'٨':8, u'٩':9
#グジャラーティー数字(インド・グジャラート州)
, u'૦':0, u'૧':1, u'૨':2, u'૩':3, u'૪':4
, u'૫':5, u'૬':6, u'૭':7, u'૮':8, u'૯':9
#グルムキー数字(インドパンジャーブ州内のシク教徒パンジャーブ語)
, u'੦':0, u'੧':1, u'੨':2, u'੩':3, u'੪':4
, u'੫':5, u'੬':6, u'੭':7, u'੮':8, u'੯':9
#テルグ数字(テルグ語:インド南東部のアーンドラ・プラデーシュ州の公用語)
, u'౦':0, u'౧':1, u'౨':2, u'౩':3, u'౪':4
, u'౫':5, u'౬':6, u'౭':7, u'౮':8, u'౯':9
#カンナダ数字(カンナダ南インド カルナータカ州の公用語)
, u'೦':0, u'೧':1, u'೨':2, u'೩':3, u'೪':4
, u'೫':5, u'೬':6, u'೭':7, u'೮':8, u'೯':9
#マラヤーラム数字(マラヤーラム語: インド南部の主にケーララ州)
, u'൦':0, u'൧':1, u'൨':2, u'൩':3, u'൪':4
, u'൫':5, u'൬':6, u'൭':7, u'൮':8, u'൯':9
#タミル数字(タミル語: 南インドタミル・ナードゥ州の公用語、
# スリランカとシンガポールでは国の公用語の一つ)
, u'௦':0, u'௧':1, u'௨':2, u'௩':3, u'௪':4
, u'௫':5, u'௬':6, u'௭':7, u'௮':8, u'௯':9
#ベンガル数字(ベンガル語とアッサム語)
, u'০':0, u'১':1, u'২':2, u'৩':3, u'৪':4
, u'৫':5, u'৬':6, u'৭':7, u'৮':8, u'৯':9
#オリヤー数字(オリヤー語)
, u'୦':0, u'୧':1, u'୨':2, u'୩':3, u'୪':4
, u'୫':5, u'୬':6, u'୭':7, u'୮':8, u'୯':9
#ビルマ数字(ビルマ語: ミャンマー連邦の公用語)
, u'၀':0, u'၁':1, u'၂':2, u'၃':3, u'၄':4
, u'၅':5, u'၆':6, u'၇':7, u'၈':8, u'၉':9
#クメール数字(クメール語: カンボジアの公用語)
, u'០':0, u'១':1, u'២':2, u'៣':3, u'៤':4
, u'៥':5, u'៦':6, u'៧':7, u'៨':8, u'៩':9
#タイ数字
, u'๐':0, u'๑':1, u'๒':2, u'๓':3, u'๔':4
, u'๕':5, u'๖':6, u'๗':7, u'๘':8, u'๙':9
#ラーオ数字(ラーオ語: ラオスの公用語)
, u'໐':0, u'໑':1, u'໒':2, u'໓':3, u'໔':4
, u'໕':5, u'໖':6, u'໗':7, u'໘':8, u'໙':9
#チベット数字(チベット語・ゾンカ語)
, u'༠':0, u'༡':1, u'༢':2, u'༣':3, u'༤':4
, u'༥':5, u'༦':6, u'༧':7, u'༨':8, u'༩':9
# , u'':0, u'':1, u'':2, u'':3, u'':4
# , u'':5, u'':6, u'':7, u'':8, u'':9
}
for k in alt_kurai_dic: #
kurai_dic[k]=alt_kurai_dic[k] # 位辞書の追加修正
for k in del_kurai_list: #
del kurai_dic[k] # 位辞書より削除

r = reverse(s) #末尾文字から解釈するので文字列を反転
ketaage = k3 = k4 = 1 #各桁上げ変数を1に初期化
n = 0 #桁刻みの数の計算用
p = '' #次の処理の為一つ前の文字の区分を記録
for i in r: #末尾より一文字ずつ
if i in knum_dic: # 漢数字0〜9なら
if p=='n': # もし、一つ前もそうなら
ketaage *= 10 # kizamiに依存せず一桁上げ
n += (k3 * k4 * ketaage # 拾百千の桁刻みが省かれているものとして
* knum_dic[i]) # 一桁桁上げして加算
else: # でないなら
n += k3 * k4 * knum_dic[i] # 万以上の位と千以下の刻みをかけて加算
p = 'n' # 次の処理の為一つ前が数字文字だったと記録
elif i in kizami_dic: # 千百十の刻みなら
k3 = kizami_dic[i] # 千以下の刻み桁数を代入: 千=1000, 百=100, 拾=10
ketaage = 1 # 漢数字0〜9連続時の桁上げをクリア
p = 'z' # 次の処理の為一つ前が千以下の刻み文字だったと記録
elif i in kurai_dic: # 万以上の絶対位の文字なら
k4 = kurai_dic[i] # 万以上の絶対位の桁数を代入: 万=10000
k3 = 1 # 千以下の刻み桁数をクリア
ketaage = 1 # 漢数字0〜9連続時の桁上げをクリア
p = 'k' # 次の処理の為一つ前が万以上の位文字だったと記録
else: # それ以外は
if i in comma:
pass
else:
raise ValueError(
'\nValueError: str2int(s) '
'数字外の文字に遭遇しました!\n '
'引数の文字列をチェックして下さい。\n')
if p=='z' or p=='k': #最後の未処理分は
n += k3 * k4 # 頭の一が省略されたものと看做し処理 …(1)
return n #結果を返す

def reverse(s):
"""Unicode文字列用の降順並替関数(python2.x系のunicode型にはreverse()メソッドがない)"""
st = list(s) #いきなりlist化
st.reverse()
return u''.join(st)

def zen_conv(s, mode='han2kata', yen=u'¥'
, alt_dic={}, del_list=[]
, my_dic={}, pass_list=[], debug=0):
"""
半角カナの全角カナ置替関数
===================

第一引数 置替
mode(次の変換モードを指定)::

'han2kata' : 1.半角カタカナを全角カタカナへ 'kata2han' : 2.全角カタカナを半角カタカナへ
'han2hira' : 3.半角カタカナを全角ひらがなへ 'hira2han' : 4.全角ひらがなを半角カタカナへ
'asc2zen' : 5.半角英数記号を全角英数記号へ 'zen2asc' : 6.全角英数記号を半角英数記号へ
'han2zen' : 7.半角カタカナ英数記号を全角へ 'zen2han' : 8.全角仮名文字英数記号を半角へ
'kata2hira': 9.全角カタカナを全角ひらがなへ 'hira2kata':10.全角ひらがなを全角カタカナへ
'kana2han' :11.全角平片仮名を半角カタカナへ 'num2zen' :12.半角算用数字を全角算用数字へ
'num2han' :13.全角算用数字を半角算用数字へ 'num2knm' :14.半角算用数字を普通の漢数字へ
'knm2num' :15.普通の漢数字を半角算用数字へ 'num2dai' :16.半角算用数字を大字表記数字へ
'dai2num' :17.大字表記数字を半角算用数字へ 'knm2dai' :18.普通の漢数字を大字表記数字へ
'dai2knm' :19.大字表記数字を普通の漢数字へ
'dev2num' :20.デーヴァナーガリー数字を数へ 'num2dev' :21.数をデーヴァナーガリー数字へ
'per2num' :22.ペルシア数字を半角算用数字へ 'num2per' :23.半角算用数字をペルシア数字へ
'ara2num' :24.アラビア・インド数字を数字へ 'num2ara' :25.数字をアラビア・インド数字へ
'guj2num' :26.グジャラーティー数字を数字へ 'num2guj' :27.数字をグジャラーティー数字へ
'gur2num' :28.グルムキー数字 を 半角数字へ 'num2gur' :29.半角数字 を グルムキー数字へ
'tel2num' :30.テルグ数字 を 半角算用数字へ 'num2tel' :31.半角算用数字 を テルグ数字へ
'kan2num' :32.カンナダ数字を半角算用数字へ 'num2kan' :33.半角算用数字をカンナダ数字へ
'mal2num' :34.マラヤーラム数字を半角数字へ 'num2mal' :35.半角数字をマラヤーラム数字へ
'tam3num' :36.タミル数字 を 半角算用数字へ 'num2tam' :37.半角算用数字 を タミル数字へ
'ban2num' :38.ベンガル数字を半角算用数字へ 'num2ban' :39.半角算用数字をベンガル数字へ
'ori2num' :40.オリヤー数字を半角算用数字へ 'num2ori' :41.半角算用数字をオリヤー数字へ
'bur2num' :42.ビルマ数字 を 半角算用数字へ 'num2bur' :43.半角算用数字 を ビルマ数字へ
'khm2num' :44.クメール数字を半角算用数字へ 'num2khm' :45.半角算用数字をクメール数字へ
'tha2num' :46.タイ数字 を 半角算用数字へ 'num2tha' :47.半角算用数字 を タイ数字へ
'lao2num' :48.ラーオ数字 を 半角算用数字へ 'num2lao' :49.半角算用数字 を ラーオ数字へ
'tib2num' :50.チベット数字を半角算用数字へ 'num2tib' :51.半角算用数字をチベット数字へ
[命名規則 :hira=全角ひらがな, kata=全角カタカナ, han=半角, zen=全角
asc=半角英数記号(ascii文字), ' to '='2']

yen('\'を'¥'以外置替る文字を指定)::

u'¥' :'\'を'¥'に置替(既定)
u'\' :'\'を'\'に置替
None :'\'を置替えない


alt_dic={}置替対象文字の対を辞書で指定し置替を追加修正::

alt_dic=
例: {u'→':'->', u'⇒':'=>'}(矢印を半角で表現)
{'/':u'÷'} (数式の除算記号に置替)
{'\\':u'\'} (※yen=u'\'と等価)

del_list(置替対象文字をリスト指定し置替除外)
del_list=
[] :この関数標準の置替辞書をそのまま使う(既定)
例:['+', '-', '*', '/', '=']
pass_list 置替対象としたくない部分をリスト指定し置替除外
pass_list=
[] :文字列s全文に対し置替え処理を行なう
例: [u'こんにちわ', u'さようなら'] 挨拶部分のみ変換から除外
my_dic={} 添付の11種の置替辞書以外の自前置替辞書を指定
"""

## 1.半角カタカナ ⇒ 全角カタカナ 辞書 ##
han2kata = {
u'ア':u'ア', u'イ':u'イ', u'ウ':u'ウ', u'エ':u'エ', u'オ':u'オ'
, u'カ':u'カ', u'キ':u'キ', u'ク':u'ク', u'ケ':u'ケ', u'コ':u'コ'
, u'サ':u'サ', u'シ':u'シ', u'ス':u'ス', u'セ':u'セ', u'ソ':u'ソ'
, u'タ':u'タ', u'チ':u'チ', u'ツ':u'ツ', u'テ':u'テ', u'ト':u'ト'
, u'ナ':u'ナ', u'ニ':u'ニ', u'ヌ':u'ヌ', u'ネ':u'ネ', u'ノ':u'ノ'
, u'ハ':u'ハ', u'ヒ':u'ヒ', u'フ':u'フ', u'ヘ':u'ヘ', u'ホ':u'ホ'
, u'マ':u'マ', u'ミ':u'ミ', u'ム':u'ム', u'メ':u'メ', u'モ':u'モ'
, u'ヤ':u'ヤ', u'ユ':u'ユ', u'ヨ':u'ヨ', u'゚':u'゜', u'゙':u'゛'
, u'ラ':u'ラ', u'リ':u'リ', u'ル':u'ル', u'レ':u'レ', u'ロ':u'ロ'
, u'ワ':u'ワ', u'ン':u'ン', u'「':u'「', u'」':u'」', u'。':u'。'
, u'、':u'、', u'・':u'・', u'ァ':u'ァ', u'ィ':u'ィ', u'ゥ':u'ゥ'
, u'ェ':u'ェ', u'ォ':u'ォ', u'ャ':u'ャ', u'ュ':u'ュ', u'ョ':u'ョ'

, u'ガ':u'ガ', u'ギ':u'ギ', u'グ':u'グ', u'ゲ':u'ゲ', u'ゴ':u'ゴ'
, u'ザ':u'ザ', u'ジ':u'ジ', u'ズ':u'ズ', u'ゼ':u'ゼ', u'ゾ':u'ゾ'
, u'ダ':u'ダ', u'ヂ':u'ヂ', u'ヅ':u'ヅ', u'デ':u'デ', u'ド':u'ド'
, u'バ':u'バ', u'ビ':u'ビ', u'ブ':u'ブ', u'ベ':u'ベ', u'ボ':u'ボ'
, u'パ':u'パ', u'ピ':u'ピ', u'プ':u'プ', u'ペ':u'ペ', u'ポ':u'ポ'
, u'ヴ':u'ヴ'
, u'ヲ' :u'ヲ', u'ー':u'ー'}

## 2.全角カタカナ ⇒ 半角カタカナ 辞書 ##
kata2han = {
u'ア':u'ア', u'イ':u'イ', u'ウ':u'ウ', u'エ':u'エ', u'オ':u'ケ'
, u'カ':u'カ', u'キ':u'キ', u'ク':u'ク', u'ケ':u'ケ', u'コ':u'コ'
, u'サ':u'サ', u'シ':u'シ', u'ス':u'ス', u'セ':u'セ', u'ソ':u'ソ'
, u'タ':u'タ', u'チ':u'チ', u'ツ':u'ツ', u'テ':u'テ', u'ト':u'ト'
, u'ナ':u'ナ', u'ニ':u'ニ', u'ヌ':u'ヌ', u'ネ':u'ネ', u'ノ':u'ノ'
, u'ハ':u'ハ', u'ヒ':u'ヒ', u'フ':u'フ', u'ヘ':u'ヘ', u'ホ':u'ホ'
, u'マ':u'マ', u'ミ':u'ミ', u'ム':u'ム', u'メ':u'メ', u'モ':u'モ'
, u'ヤ':u'ヤ', u'ユ':u'ユ', u'ヨ':u'ヨ', u'゜':u'゚', u'゛':u'゙'
, u'ラ':u'ラ', u'リ':u'リ', u'ル':u'ル', u'レ':u'レ', u'ロ':u'ロ'
, u'ワ':u'ワ', u'ン':u'ン', u'「':u'「', u'」':u'」', u'。':u'。'
, u'、':u'、', u'・':u'・', u'ァ':u'ァ', u'ィ':u'ィ', u'ゥ':u'ゥ'
, u'ェ':u'ェ', u'ォ':u'ォ', u'ャ':u'ャ', u'ュ':u'ュ', u'ョ':u'ョ'

, u'ガ':u'ガ', u'ギ':u'ギ', u'グ':u'グ', u'ゲ':u'ゲ', u'ゴ':u'ゴ'
, u'ザ':u'ザ', u'ジ':u'ジ', u'ズ':u'ズ', u'ゼ':u'ゼ', u'ゾ':u'ゾ'
, u'ダ':u'ダ', u'ヂ':u'ヂ', u'ヅ':u'ヅ', u'デ':u'デ', u'ド':u'ド'
, u'バ':u'バ', u'ビ':u'ビ', u'ブ':u'ブ', u'ベ':u'ベ', u'ボ':u'ボ'
, u'パ':u'バ', u'ピ':u'ピ', u'プ':u'プ', u'ペ':u'ペ', u'ポ':u'ポ'
, u'ヴ':u'ヴ'
, u'ヲ':u'ヲ' , u'ー':u'ー'}

## 3.半角カタカナ ⇒ 全角ひらがな 辞書 ##
han2hira = {
u'ア':u'あ', u'イ':u'い', u'ウ':u'う', u'エ':u'え', u'オ':u'お'
, u'カ':u'か', u'キ':u'き', u'ク':u'く', u'ケ':u'け', u'コ':u'こ'
, u'サ':u'さ', u'シ':u'し', u'ス':u'す', u'セ':u'せ', u'ソ':u'そ'
, u'タ':u'た', u'チ':u'ち', u'ツ':u'つ', u'テ':u'て', u'ト':u'と'
, u'ナ':u'な', u'ニ':u'に', u'ヌ':u'ぬ', u'ネ':u'ね', u'ノ':u'の'
, u'ハ':u'は', u'ヒ':u'ひ', u'フ':u'ふ', u'ヘ':u'へ', u'ホ':u'ほ'
, u'マ':u'ま', u'ミ':u'み', u'ム':u'む', u'メ':u'め', u'モ':u'も'
, u'ヤ':u'や', u'ユ':u'ゆ', u'ヨ':u'よ', u'゚':u'゜', u'゙':u'゛'
, u'ラ':u'ら', u'リ':u'り', u'ル':u'る', u'レ':u'れ', u'ロ':u'ろ'
, u'ワ':u'わ', u'ン':u'ん', u'「':u'「', u'」':u'」', u'。':u'。'
, u'、':u'、', u'・':u'・', u'ァ':u'ぁ', u'ィ':u'ぃ', u'ゥ':u'ぅ'
, u'ェ':u'ぇ', u'ォ':u'ぉ', u'ャ':u'ゃ', u'ュ':u'ゅ', u'ョ':u'ょ'

, u'ガ':u'が', u'ギ':u'ぎ', u'グ':u'ぐ', u'ゲ':u'げ', u'ゴ':u'ご'
, u'ザ':u'ざ', u'ジ':u'じ', u'ズ':u'ず', u'ゼ':u'ぜ', u'ゾ':u'ぞ'
, u'ダ':u'だ', u'ヂ':u'ぢ', u'ヅ':u'づ', u'デ':u'で', u'ド':u'ど'
, u'バ':u'ば', u'ビ':u'び', u'ブ':u'ぶ', u'ベ':u'べ', u'ボ':u'ぼ'
, u'パ':u'ぱ', u'ピ':u'ぴ', u'プ':u'ぷ', u'ペ':u'ぺ', u'ポ':u'ぽ'
, u'ヴ':u'ヴ' #2012-01-19 'ヴ'を見付け追加
, u'ヲ':u'を' , u'ー':u'ー'}

## 4.全角ひらがな ⇒ 半角カタカナ 辞書 ##
hira2han = {
u'あ':u'ア', u'い':u'イ', u'う':u'ウ', u'え':u'エ', u'お':u'オ'
, u'か':u'カ', u'き':u'キ', u'く':u'ク', u'け':u'ケ', u'こ':u'コ'
, u'さ':u'サ', u'し':u'シ', u'す':u'ス', u'せ':u'セ', u'そ':u'ソ'
, u'た':u'タ', u'ち':u'チ', u'つ':u'ツ', u'て':u'テ', u'と':u'ト'
, u'な':u'ナ', u'に':u'ニ', u'ぬ':u'ヌ', u'ね':u'ネ', u'の':u'ノ'
, u'は':u'ハ', u'ひ':u'ヒ', u'ふ':u'フ', u'へ':u'ヘ', u'ほ':u'ホ'
, u'ま':u'マ', u'み':u'ミ', u'む':u'ム', u'め':u'メ', u'も':u'モ'
, u'や':u'ヤ', u'ゆ':u'ユ', u'よ':u'ヨ', u'゜':u'゚', u'゛':u'゙'
, u'ら':u'ラ', u'り':u'リ', u'る':u'ル', u'れ':u'レ', u'ろ':u'ロ'
, u'わ':u'ワ', u'ん':u'ン', u'「':u'「', u'」':u'」', u'。':u'。'
, u'、':u'、', u'・':u'・', u'ぁ':u'ァ', u'ぃ':u'ィ', u'ぅ':u'ゥ'
, u'ぇ':u'ェ', u'ぉ':u'ォ', u'ゃ':u'ャ', u'ゅ':u'ュ', u'ょ':u'ョ'

, u'が':u'ガ', u'ぎ':u'ギ', u'ぐ':u'グ', u'げ':u'ゲ', u'ご':u'ゴ'
, u'ざ':u'ザ', u'じ':u'ジ', u'ず':u'ズ', u'ぜ':u'ゼ', u'ぞ':u'ゾ'
, u'だ':u'ダ', u'ぢ':u'ヂ', u'づ':u'ヅ', u'で':u'デ', u'ど':u'ド'
, u'ば':u'バ', u'び':u'ビ', u'ぶ':u'ブ', u'べ':u'ベ', u'ぼ':u'ボ'
, u'ぱ':u'パ', u'ぴ':u'ピ', u'ぷ':u'プ', u'ぺ':u'ペ', u'ぽ':u'ポ'
, u'ヴ':u'ヴ' #2012-01-19 'ヴ'を見付け追加
, u'を':u'ヲ' , u'ー':u'ー'}

## 5.半角英数記号 ⇒ 全角英数記号 辞書 ##
asc2zen = {'A':u'A', 'B':u'B', 'C':u'C', 'D':u'D', 'E':u'E'
,'F':u'F', 'G':u'G', 'H':u'H', 'I':u'I', 'J':u'J'
,'K':u'K', 'L':u'L', 'M':u'M', 'N':u'N', 'O':u'O'
,'P':u'P', 'Q':u'Q', 'R':u'R', 'S':u'S', 'T':u'T'
,'U':u'U', 'V':u'V', 'W':u'W', 'X':u'X', 'Y':u'Y'
,'Z':u'Z', '!':u'!', '\"':u'”', '#':u'#', '$':u'$'
,'%':u'%', '&':u'&', '\'':u'’', '(':u'(', ')':u')'
,'~':u'〜', '-':u'−', '=':u'=', '^':u'^', '~':u'〜'
,'\\':u'¥', '|':u'|', '@':u'@', '`':u'‘', '[':u'['
,'{':u'{', ';':u';', '+':u'+', ':':u':', '*':u'*'
,']':u']', '}':u'}', ',':u',', '<':u'<', '.':u'.'
,'>':u'>', '/':u'/', '?':u'?', '_':u'_'
,'a':u'a', 'b':u'b', 'c':u'c', 'd':u'd', 'e':u'e'
,'f':u'f', 'g':u'g', 'h':u'h', 'i':u'i', 'j':u'j'
,'k':u'k', 'l':u'l', 'm':u'm', 'n':u'n', 'o':u'o'
,'p':u'p', 'q':u'q', 'r':u'r', 's':u's', 't':u't'
,'u':u'u', 'v':u'v', 'w':u'w', 'x':u'x', 'y':u'y'
,'z':u'z'
, '0':u'0', '1':u'1', '2':u'2', '3':u'3', '4':u'4'
,'5':u'5', '6':u'6', '7':u'7', '8':u'8', '9':u'9'}

## 6.全角英数記号 ⇒ 半角英数記号 辞書 ##
zen2asc = {u'A':'A', u'B':'B', u'C':'C', u'D':'D', u'E':'E'
, u'F':'F', u'G':'G', u'H':'H', u'I':'I', u'J':'J'
, u'K':'K', u'L':'L', u'M':'M', u'N':'N', u'O':'O'
, u'P':'P', u'Q':'Q', u'R':'R', u'S':'S', u'T':'T'
, u'U':'U', u'V':'V', u'W':'W', u'X':'X', u'Y':'Y'
, u'Z':'z', u'!':'!', u'”':'\"', u'#':'#', u'$':'$'
, u'%':'%', u'&':'&', u'’':'\'', u'(':'(', u')':')'
, u'−':'-', u'=':'=', u'^':'^', u'〜':'~', u'¥':'\\'
, u'@':'@', u'‘':'`', u'[':'[', u'{':'{', u';':';'
, u'+':'+', u':':':', u'*':'*', u']':']', u'}':'}'
, u',':',', u'<':'<', u'.':'.', u'>':'>', u'/':'/'
, u'?':'?', u'\':'\\', u'_':'_'

, u'a':'a', u'b':'b', u'c':'c', u'd':'d', u'e':'e'
, u'f':'f', u'g':'g', u'h':'h', u'i':'i', u'j':'j'
, u'k':'k', u'l':'l', u'm':'m', u'n':'n', u'o':'o'
, u'p':'p', u'q':'q', u'r':'r', u's':'s', u't':'t'
, u'u':'u', u'v':'v', u'w':'w', u'x':'x', u'y':'y'
, u'z':'z'
, u'0':'0', u'1':'1', u'2':'2', u'3':'3', u'4':'4'
, u'5':'5', u'6':'6', u'7':'7', u'8':'8', u'9':'9'}

## 7.半角カタカナ英数記号 ⇒ 全角全角 辞書 ##
han2zen = {'A':u'A', 'B':u'B', 'C':u'C', 'D':u'D', 'E':u'E'
,'F':u'F', 'G':u'G', 'H':u'H', 'I':u'I', 'J':u'J'
,'K':u'K', 'L':u'L', 'M':u'M', 'N':u'N', 'O':u'O'
,'P':u'P', 'Q':u'Q', 'R':u'R', 'S':u'S', 'T':u'T'
,'U':u'U', 'V':u'V', 'W':u'W', 'X':u'X', 'Y':u'Y'
,'Z':u'Z', '!':u'!', '\"':u'”', '#':u'#', '$':u'$'
,'%':u'%', '&':u'&', '\'':u'’', '(':u'(', ')':u')'
,'~':u'〜', '-':u'−', '=':u'=', '^':u'^', '~':u'〜'
,'\\':u'¥', '|':u'|', '@':u'@', '`':u'‘', '[':u'['
,'{':u'{', ';':u';', '+':u'+', ':':u':', '*':u'*'
,']':u']', '}':u'}', ',':u',', '<':u'<', '.':u'.'
,'>':u'>', '/':u'/', '?':u'?', '_':u'_'
,'a':u'a', 'b':u'b', 'c':u'c', 'd':u'd', 'e':u'e'
,'f':u'f', 'g':u'g', 'h':u'h', 'i':u'i', 'j':u'j'
,'k':u'k', 'l':u'l', 'm':u'm', 'n':u'n', 'o':u'o'
,'p':u'p', 'q':u'q', 'r':u'r', 's':u's', 't':u't'
,'u':u'u', 'v':u'v', 'w':u'w', 'x':u'x', 'y':u'y'
,'z':u'z'

, '0':u'0', '1':u'1', '2':u'2', '3':u'3', '4':u'4'
,'5':u'5', '6':u'6', '7':u'7', '8':u'8', '9':u'9'
, u'ア':u'ア', u'イ':u'イ', u'ウ':u'ウ', u'エ':u'エ', u'オ':u'オ'
, u'カ':u'カ', u'キ':u'キ', u'ク':u'ク', u'ケ':u'ケ', u'コ':u'コ'
, u'サ':u'サ', u'シ':u'シ', u'ス':u'ス', u'セ':u'セ', u'ソ':u'ソ'
, u'タ':u'タ', u'チ':u'チ', u'ツ':u'ツ', u'テ':u'テ', u'ト':u'ト'
, u'ナ':u'ナ', u'ニ':u'ニ', u'ヌ':u'ヌ', u'ネ':u'ネ', u'ノ':u'ノ'
, u'ハ':u'ハ', u'ヒ':u'ヒ', u'フ':u'フ', u'ヘ':u'ヘ', u'ホ':u'ホ'
, u'マ':u'マ', u'ミ':u'ミ', u'ム':u'ム', u'メ':u'メ', u'モ':u'モ'
, u'ヤ':u'ヤ', u'ユ':u'ユ', u'ヨ':u'ヨ', u'゚':u'゜', u'゙':u'゛'
, u'ラ':u'ラ', u'リ':u'リ', u'ル':u'ル', u'レ':u'レ', u'ロ':u'ロ'
, u'ワ':u'ワ', u'ン':u'ン', u'「':u'「', u'」':u'」', u'。':u'。'
, u'、':u'、', u'・':u'・', u'ァ':u'ァ', u'ィ':u'ィ', u'ゥ':u'ゥ'
, u'ェ':u'ェ', u'ォ':u'ォ', u'ャ':u'ャ', u'ュ':u'ュ', u'ョ':u'ョ'

, u'ガ':u'ガ', u'ギ':u'ギ', u'グ':u'グ', u'ゲ':u'ゲ', u'ゴ':u'ゴ'
, u'ザ':u'ザ', u'ジ':u'ジ', u'ズ':u'ズ', u'ゼ':u'ゼ', u'ゾ':u'ゾ'
, u'ダ':u'ダ', u'ヂ':u'ヂ', u'ヅ':u'ヅ', u'デ':u'デ', u'ド':u'ド'
, u'バ':u'バ', u'ビ':u'ビ', u'ブ':u'ブ', u'ベ':u'ベ', u'ボ':u'ボ'
, u'パ':u'パ', u'ピ':u'ピ', u'プ':u'プ', u'ペ':u'ペ', u'ポ':u'ポ'
, u'ヴ':u'ヴ'
, u'ヲ' :u'ヲ', u'ー':u'ー'}

## 8.全角仮名文字英数記号 ⇒ 半角 辞書 ##
zen2han = {
u'A':'A', u'B':'B', u'C':'C', u'D':'D', u'E':'E'
, u'F':'F', u'G':'G', u'H':'H', u'I':'I', u'J':'J'
, u'K':'K', u'L':'L', u'M':'M', u'N':'N', u'O':'O'
, u'P':'P', u'Q':'Q', u'R':'R', u'S':'S', u'T':'T'
, u'U':'U', u'V':'V', u'W':'W', u'X':'X', u'Y':'Y'
, u'Z':'z', u'!':'!', u'”':'\"', u'#':'#', u'$':'$'
, u'%':'%', u'&':'&', u'’':'\'', u'(':'(', u')':')'
, u'−':'-', u'=':'=', u'^':'^', u'〜':'~', u'¥':'\\'
, u'@':'@', u'‘':'`', u'[':'[', u'{':'{', u';':';'
, u'+':'+', u':':':', u'*':'*', u']':']', u'}':'}'
, u',':',', u'<':'<', u'.':'.', u'>':'>', u'/':'/'
, u'?':'?', u'\':'\\', u'_':'_'
, u'a':'a', u'b':'b', u'c':'c', u'd':'d', u'e':'e'
, u'f':'f', u'g':'g', u'h':'h', u'i':'i', u'j':'j'
, u'k':'k', u'l':'l', u'm':'m', u'n':'n', u'o':'o'
, u'p':'p', u'q':'q', u'r':'r', u's':'s', u't':'t'
, u'u':'u', u'v':'v', u'w':'w', u'x':'x', u'y':'y'
, u'z':'z'
, u'0':'0', u'1':'1', u'2':'2', u'3':'3', u'4':'4'
, u'5':'5', u'6':'6', u'7':'7', u'8':'8', u'9':'9'
, u'ア':u'ア', u'イ':u'イ', u'ウ':u'ウ', u'エ':u'エ', u'オ':u'ケ'
, u'カ':u'カ', u'キ':u'キ', u'ク':u'ク', u'ケ':u'ケ', u'コ':u'コ'
, u'サ':u'サ', u'シ':u'シ', u'ス':u'ス', u'セ':u'セ', u'ソ':u'ソ'
, u'タ':u'タ', u'チ':u'チ', u'ツ':u'ツ', u'テ':u'テ', u'ト':u'ト'
, u'ナ':u'ナ', u'ニ':u'ニ', u'ヌ':u'ヌ', u'ネ':u'ネ', u'ノ':u'ノ'
, u'ハ':u'ハ', u'ヒ':u'ヒ', u'フ':u'フ', u'ヘ':u'ヘ', u'ホ':u'ホ'
, u'マ':u'マ', u'ミ':u'ミ', u'ム':u'ム', u'メ':u'メ', u'モ':u'モ'
, u'ヤ':u'ヤ', u'ユ':u'ユ', u'ヨ':u'ヨ', u'゜':u'゚', u'゛':u'゙'
, u'ラ':u'ラ', u'リ':u'リ', u'ル':u'ル', u'レ':u'レ', u'ロ':u'ロ'
, u'ワ':u'ワ', u'ン':u'ン', u'「':u'「', u'」':u'」', u'。':u'。'
, u'、':u'、', u'・':u'・', u'ァ':u'ァ', u'ィ':u'ィ', u'ゥ':u'ゥ'
, u'ェ':u'ェ', u'ォ':u'ォ', u'ャ':u'ャ', u'ュ':u'ュ', u'ョ':u'ョ'

, u'ガ':u'ガ', u'ギ':u'ギ', u'グ':u'グ', u'ゲ':u'ゲ', u'ゴ':u'ゴ'
, u'ザ':u'ザ', u'ジ':u'ジ', u'ズ':u'ズ', u'ゼ':u'ゼ', u'ゾ':u'ゾ'
, u'ダ':u'ダ', u'ヂ':u'ヂ', u'ヅ':u'ヅ', u'デ':u'デ', u'ド':u'ド'
, u'バ':u'バ', u'ビ':u'ビ', u'ブ':u'ブ', u'ベ':u'ベ', u'ボ':u'ボ'
, u'パ':u'バ', u'ピ':u'ピ', u'プ':u'プ', u'ペ':u'ペ', u'ポ':u'ポ'
, u'ヴ':u'ヴ'
, u'ヲ':u'ヲ'

, u'あ':u'ア', u'い':u'イ', u'う':u'ウ', u'え':u'エ', u'お':u'オ'
, u'か':u'カ', u'き':u'キ', u'く':u'ク', u'け':u'ケ', u'こ':u'コ'
, u'さ':u'サ', u'し':u'シ', u'す':u'ス', u'せ':u'セ', u'そ':u'ソ'
, u'た':u'タ', u'ち':u'チ', u'つ':u'ツ', u'て':u'テ', u'と':u'ト'
, u'な':u'ナ', u'に':u'ニ', u'ぬ':u'ヌ', u'ね':u'ネ', u'の':u'ノ'
, u'は':u'ハ', u'ひ':u'ヒ', u'ふ':u'フ', u'へ':u'ヘ', u'ほ':u'ホ'
, u'ま':u'マ', u'み':u'ミ', u'む':u'ム', u'め':u'メ', u'も':u'モ'
, u'や':u'ヤ', u'ゆ':u'ユ', u'よ':u'ヨ', u'゜':u'゚', u'゛':u'゙'
, u'ら':u'ラ', u'り':u'リ', u'る':u'ル', u'れ':u'レ', u'ろ':u'ロ'
, u'わ':u'ワ', u'ん':u'ン'
, u'、':u'、', u'・':u'・', u'ぁ':u'ァ', u'ぃ':u'ィ', u'ぅ':u'ゥ'
, u'ぇ':u'ェ', u'ぉ':u'ォ', u'ゃ':u'ャ', u'ゅ':u'ュ', u'ょ':u'ョ'

, u'が':u'ガ', u'ぎ':u'ギ', u'ぐ':u'グ', u'げ':u'ゲ', u'ご':u'ゴ'
, u'ざ':u'ザ', u'じ':u'ジ', u'ず':u'ズ', u'ぜ':u'ゼ', u'ぞ':u'ゾ'
, u'だ':u'ダ', u'ぢ':u'ヂ', u'づ':u'ヅ', u'で':u'デ', u'ど':u'ド'
, u'ば':u'バ', u'び':u'ビ', u'ぶ':u'ブ', u'べ':u'ベ', u'ぼ':u'ボ'
, u'ぱ':u'パ', u'ぴ':u'ピ', u'ぷ':u'プ', u'ぺ':u'ペ', u'ぽ':u'ポ'
, u'ヴ':u'ヴ' #2012-01-19 'ヴ'を見付け追加
, u'を':u'ヲ' , u'ー':u'ー'}

## 9.全角カタカナ ⇒ 全角ひらがな 辞書 ##
kata2hira = {
u'ア':u'あ', u'イ':u'い', u'ウ':u'う', u'エ':u'え', u'オ':u'お'
, u'カ':u'か', u'キ':u'き', u'ク':u'く', u'ケ':u'け', u'コ':u'こ'
, u'サ':u'さ', u'シ':u'し', u'ス':u'す', u'セ':u'せ', u'ソ':u'そ'
, u'タ':u'た', u'チ':u'ち', u'ツ':u'つ', u'テ':u'て', u'ト':u'と'
, u'ナ':u'な', u'ニ':u'に', u'ヌ':u'ぬ', u'ネ':u'ね', u'ノ':u'の'
, u'ハ':u'は', u'ヒ':u'ひ', u'フ':u'ふ', u'ヘ':u'へ', u'ホ':u'ほ'
, u'マ':u'ま', u'ミ':u'み', u'ム':u'む', u'メ':u'め', u'モ':u'も'
, u'ヤ':u'や', u'ユ':u'ゆ', u'ヨ':u'よ', u'゜':u'゜', u'゛':u'゛'
, u'ラ':u'ら', u'リ':u'り', u'ル':u'る', u'レ':u'れ', u'ロ':u'ろ'
, u'ワ':u'わ', u'ン':u'ん'
, u'ァ':u'ぁ', u'ィ':u'ぃ', u'ゥ':u'ぅ'
, u'ェ':u'ぇ', u'ォ':u'ぉ', u'ャ':u'ゃ', u'ュ':u'ゅ', u'ョ':u'ょ'

, u'ガ':u'が', u'ギ':u'ぎ', u'グ':u'ぐ', u'ゲ':u'げ', u'ゴ':u'ご'
, u'ザ':u'ざ', u'ジ':u'じ', u'ズ':u'ず', u'ゼ':u'ぜ', u'ゾ':u'ぞ'
, u'ダ':u'だ', u'ヂ':u'ぢ', u'ヅ':u'づ', u'デ':u'で', u'ド':u'ど'
, u'バ':u'ば', u'ビ':u'び', u'ブ':u'ぶ', u'ベ':u'べ', u'ボ':u'ぼ'
, u'パ':u'ぱ', u'ピ':u'ぴ', u'プ':u'ぷ', u'ペ':u'ぺ', u'ポ':u'ぽ'
, u'ヴ':u'ヴ' #2012-01-19 'ヴ'を見付け追加
, u'ヲ':u'を'}

## 10.全角ひらがな ⇒ 全角カタカナ 辞書 ##
hira2kata = {
u'あ':u'ア', u'い':u'イ', u'う':u'ウ', u'え':u'エ', u'お':u'オ'
, u'か':u'カ', u'き':u'キ', u'く':u'ク', u'け':u'ケ', u'こ':u'コ'
, u'さ':u'サ', u'し':u'シ', u'す':u'ス', u'せ':u'セ', u'そ':u'ソ'
, u'た':u'タ', u'ち':u'チ', u'つ':u'ツ', u'て':u'テ', u'と':u'ト'
, u'な':u'ナ', u'に':u'ニ', u'ぬ':u'ヌ', u'ね':u'ネ', u'の':u'ノ'
, u'は':u'ハ', u'ひ':u'ヒ', u'ふ':u'フ', u'へ':u'ヘ', u'ほ':u'ホ'
, u'ま':u'マ', u'み':u'ミ', u'む':u'ム', u'め':u'メ', u'も':u'モ'
, u'や':u'ヤ', u'ゆ':u'ユ', u'よ':u'ヨ', u'゜':u'゜', u'゛':u'゛'
, u'ら':u'ラ', u'り':u'リ', u'る':u'ル', u'れ':u'レ', u'ろ':u'ロ'
, u'わ':u'ワ', u'ん':u'ン' #, u'「':u'「', u'」':u'」', u'。':u'。'
, u'ぁ':u'ァ', u'ぃ':u'ィ', u'ぅ':u'ゥ'
, u'ぇ':u'ェ', u'ぉ':u'ォ', u'ゃ':u'ャ', u'ゅ':u'ュ', u'ょ':u'ョ'

, u'が':u'ガ', u'ぎ':u'ギ', u'ぐ':u'グ', u'げ':u'ゲ', u'ご':u'ゴ'
, u'ざ':u'ザ', u'じ':u'ジ', u'ず':u'ズ', u'ぜ':u'ゼ', u'ぞ':u'ゾ'
, u'だ':u'ダ', u'ぢ':u'ヂ', u'づ':u'ヅ', u'で':u'デ', u'ど':u'ド'
, u'ば':u'バ', u'び':u'ビ', u'ぶ':u'ブ', u'べ':u'ベ', u'ぼ':u'ボ'
, u'ぱ':u'パ', u'ぴ':u'ピ', u'ぷ':u'プ', u'ぺ':u'ペ', u'ぽ':u'ポ'
, u'ヴ':u'ヴ' #2012-01-19 'ヴ'を見付け追加
, u'を':u'ヲ'}

## 11.全角平片仮名 ⇒ 半角カタカナ半角カナ 辞書 ##
kana2han = {
u'ア':u'ア', u'イ':u'イ', u'ウ':u'ウ', u'エ':u'エ', u'オ':u'ケ'
, u'カ':u'カ', u'キ':u'キ', u'ク':u'ク', u'ケ':u'ケ', u'コ':u'コ'
, u'サ':u'サ', u'シ':u'シ', u'ス':u'ス', u'セ':u'セ', u'ソ':u'ソ'
, u'タ':u'タ', u'チ':u'チ', u'ツ':u'ツ', u'テ':u'テ', u'ト':u'ト'
, u'ナ':u'ナ', u'ニ':u'ニ', u'ヌ':u'ヌ', u'ネ':u'ネ', u'ノ':u'ノ'
, u'ハ':u'ハ', u'ヒ':u'ヒ', u'フ':u'フ', u'ヘ':u'ヘ', u'ホ':u'ホ'
, u'マ':u'マ', u'ミ':u'ミ', u'ム':u'ム', u'メ':u'メ', u'モ':u'モ'
, u'ヤ':u'ヤ', u'ユ':u'ユ', u'ヨ':u'ヨ', u'゜':u'゚', u'゛':u'゙'
, u'ラ':u'ラ', u'リ':u'リ', u'ル':u'ル', u'レ':u'レ', u'ロ':u'ロ'
, u'ワ':u'ワ', u'ン':u'ン', u'「':u'「', u'」':u'」', u'。':u'。'
, u'、':u'、', u'・':u'・', u'ァ':u'ァ', u'ィ':u'ィ', u'ゥ':u'ゥ'
, u'ェ':u'ェ', u'ォ':u'ォ', u'ャ':u'ャ', u'ュ':u'ュ', u'ョ':u'ョ'

, u'ガ':u'ガ', u'ギ':u'ギ', u'グ':u'グ', u'ゲ':u'ゲ', u'ゴ':u'ゴ'
, u'ザ':u'ザ', u'ジ':u'ジ', u'ズ':u'ズ', u'ゼ':u'ゼ', u'ゾ':u'ゾ'
, u'ダ':u'ダ', u'ヂ':u'ヂ', u'ヅ':u'ヅ', u'デ':u'デ', u'ド':u'ド'
, u'バ':u'バ', u'ビ':u'ビ', u'ブ':u'ブ', u'ベ':u'ベ', u'ボ':u'ボ'
, u'パ':u'バ', u'ピ':u'ピ', u'プ':u'プ', u'ペ':u'ペ', u'ポ':u'ポ'
, u'ヴ':u'ヴ'
, u'ヲ':u'ヲ'

, u'あ':u'ア', u'い':u'イ', u'う':u'ウ', u'え':u'エ', u'お':u'オ'
, u'か':u'カ', u'き':u'キ', u'く':u'ク', u'け':u'ケ', u'こ':u'コ'
, u'さ':u'サ', u'し':u'シ', u'す':u'ス', u'せ':u'セ', u'そ':u'ソ'
, u'た':u'タ', u'ち':u'チ', u'つ':u'ツ', u'て':u'テ', u'と':u'ト'
, u'な':u'ナ', u'に':u'ニ', u'ぬ':u'ヌ', u'ね':u'ネ', u'の':u'ノ'
, u'は':u'ハ', u'ひ':u'ヒ', u'ふ':u'フ', u'へ':u'ヘ', u'ほ':u'ホ'
, u'ま':u'マ', u'み':u'ミ', u'む':u'ム', u'め':u'メ', u'も':u'モ'
, u'や':u'ヤ', u'ゆ':u'ユ', u'よ':u'ヨ', u'゜':u'゚' , u'゛':u'゙'
, u'ら':u'ラ', u'り':u'リ', u'る':u'ル', u'れ':u'レ', u'ろ':u'ロ'
, u'わ':u'ワ', u'ん':u'ン'
, u'、':u'、', u'・':u'・', u'ぁ':u'ァ', u'ぃ':u'ィ', u'ぅ':u'ゥ'
, u'ぇ':u'ェ', u'ぉ':u'ォ', u'ゃ':u'ャ', u'ゅ':u'ュ', u'ょ':u'ョ'

, u'が':u'ガ', u'ぎ':u'ギ', u'ぐ':u'グ', u'げ':u'ゲ', u'ご':u'ゴ'
, u'ざ':u'ザ', u'じ':u'ジ', u'ず':u'ズ', u'ぜ':u'ゼ', u'ぞ':u'ゾ'
, u'だ':u'ダ', u'ぢ':u'ヂ', u'づ':u'ヅ', u'で':u'デ', u'ど':u'ド'
, u'ば':u'バ', u'び':u'ビ', u'ぶ':u'ブ', u'べ':u'ベ', u'ぼ':u'ボ'
, u'ぱ':u'パ', u'ぴ':u'ピ', u'ぷ':u'プ', u'ぺ':u'ペ', u'ぽ':u'ポ'
, u'ヴ':u'ヴ' #2012-01-19 'ヴ'を見付け追加
, u'を':u'ヲ' , u'ー':u'ー'}

## 12.半角算用数字 ⇒ 全角算用数字 辞書 ##
num2zen = {'0':u'0', '1':u'1', '2':u'2', '3':u'3', '4':u'4'
,'5':u'5', '6':u'6', '7':u'7', '8':u'8', '9':u'9'}
## 13.全角算用数字 ⇒ 半角算用数字 辞書 ##
num2han = {u'0':'0', u'1':'1', u'2':'2', u'3':'3', u'4':'4'
, u'5':'5', u'6':'6', u'7':'7', u'8':'8', u'9':'9'}

## 14.半角算用数字 ⇒ 普通の漢数字 辞書 ##
num2knm = {'0':u'〇', '1':u'一', '2':u'二', '3':u'三', '4':u'四'
, '5':u'五', '6':u'六', '7':u'七', '8':u'八', '9':u'九'}
## 15.普通の漢数字 ⇒ 半角算用数字 辞書 ##
knm2num = {u'〇':'0', u'一':'1', u'二':'2', u'三':'3', u'四':'4'
, u'五':'5', u'六':'6', u'七':'7', u'八':'8', u'九':'9'}

## 16.半角算用数字 ⇒ 大字表記数字 辞書 ##
num2dai = {'0':u'〇', '1':u'壱', '2':u'弐', '3':u'参', '4':u'四'
, '5':u'五', '6':u'六', '7':u'七', '8':u'八', '9':u'九'}
## 17.大字表記数字 ⇒ 半角算用数字 辞書 ##
dai2num = {u'〇':'0', u'壱':'1', u'弐':'2', u'参':'3', u'四':'4'
, u'五':'5', u'六':'6', u'七':'7', u'八':'8', u'九':'9'
#日本の旧大字
, u'零':'0', u'壹':'1', u'貮':'2', u'貳':'2', u'參':'3'
, u'肆':'4', u'伍':'5', u'陸':'6', u'柒':'7', u'漆':'7'
, u'質':'7', u'捌':'8', u'玖':'9'
#中国の大字
, u'零':'0', u'壹':'1', u'贰':'2', u'貳':'2', u'叁':'3'
, u'參':'3', u'肆':'4', u'伍':'5', u'陆':'6', u'陸':'6'
, u'柒':'7', u'柒':'7', u'漆':'7', u'捌':'8', u'玖':'9'}

## 18.普通の漢数字 ⇒ 大字表記数字 辞書 ##
knm2dai = {u'一':u'壱', u'二':u'弐', u'三':u'参', u'十':u'拾'}
## 19.大字表記数字 ⇒ 普通の漢数字 辞書 ##
dai2knm = {u'壱':u'一', u'弐':u'二', u'参':u'三', u'拾':u'十'
#日本の旧大字
, u'零':u'〇', u'壹':u'一', u'貮':u'二', u'貳':u'二', u'參':u'三'
, u'肆':u'四', u'伍':u'五', u'陸':u'六', u'柒':u'七', u'漆':u'七'
, u'質':u'七', u'捌':u'八', u'玖':u'九'
#中国の大字
, u'零':u'〇', u'壹':u'一', u'贰':u'二', u'貳':u'二', u'叁':u'三'
, u'參':u'三', u'肆':u'四', u'伍':u'五', u'陆':u'六', u'陸':u'六'
, u'柒':u'七', u'柒':u'七', u'漆':u'七', u'捌':u'八', u'玖':u'九'}

## デーヴァナーガリー数字 ⇒ 半角算用数字 辞書 ##
dev2num = {u'०':'0', u'१':'1', u'२':'2', u'३':'3', u'४':'4'
, u'५':'5', u'६':'6', u'७':'7', u'८':'8', u'९':'9'}
## 半角算用数字 ⇒ デーヴァナーガリー数字 辞書 ##
num2dev = {'0':u'०', '1':u'१', '2':u'२', '3':u'३', '4':u'४'
, '5':u'५', '6':u'६', '7':u'७', '8':u'८', '9':u'९'}

#ペルシア数字(ペルシア語)
per2num = {u'۰':'0', u'۱':'1', u'۲':'2', u'۳':'3', u'۴':'4'
, u'۵':'5', u'۶':'6', u'۷':'7', u'۸':'8', u'۹':'9'}
num2per = {'0':u'۰', '1':u'۱', '2':u'۲', '3':u'۳', '4':u'۴'
, '5':u'۵', '6':u'۶', '7':u'۷', '8':u'۸', '9':u'۹'}

#アラビア・インド数字
ara2num = {u'٠':'0', u'١':'1' , u'٢':'2', u'٣':'3', u'٤':'4'
, u'٥':'5', u'٦':'6' , u'٧':'7', u'٨':'8', u'٩':'9'}
num2ara = {'0':u'٠', '1':u'١' , '2':u'٢', '3':u'٣', '4':u'٤'
, '5':u'٥', '6':u'٦' , '7':u'٧', '8':u'٨', '9':u'٩'}

#グジャラーティー数字(インド・グジャラート州)
guj2num = {u'૦':'0', u'૧':'1', u'૨':'2', u'૩':'3', u'૪':'4'
, u'૫':'5', u'૬':'6', u'૭':'7', u'૮':'8', u'૯':'9'}
num2guj = {'0':u'૦', '1':u'૧', '2':u'૨', '3':u'૩', '4':u'૪'
, '5':u'૫', '6':u'૬', '7':u'૭', '8':u'૮', '9':u'૯'}

#グルムキー数字(インドパンジャーブ州内のシク教徒パンジャーブ語)
gur2num = {u'੦':'0', u'੧':'1', u'੨':'2', u'੩':'3', u'੪':'4'
, u'੫':'5', u'੬':'6', u'੭':'7', u'੮':'8', u'੯':'9'}
num2gur = {'0':u'੦', '1':u'੧', '2':u'੨', '3':u'੩', '4':u'੪'
, '5':u'੫', '6':u'੬', '7':u'੭', '8':u'੮', '9':u'੯'}

#テルグ数字(テルグ語:インド南東部のアーンドラ・プラデーシュ州の公用語)
tel2num = {u'౦':'0', u'౧':'1', u'౨':'2', u'౩':'3', u'౪':'4'
, u'౫':'5', u'౬':'6', u'౭':'7', u'౮':'8', u'౯':'9'}
num2tel = {'0':u'౦', '1':u'౧', '2':u'౨', '3':u'౩', '4':u'౪'
, '5':u'౫', '6':u'౬', '7':u'౭', '8':u'౮', '9':u'౯'}

#カンナダ数字(カンナダ南インド カルナータカ州の公用語)
kan2num = {u'೦':'0', u'೧':'1', u'೨':'2', u'೩':'3', u'೪':'4'
, u'೫':'5', u'೬':'6', u'೭':'7', u'೮':'8', u'೯':'9'}
num2kan = {'0':u'೦', '1':u'೧', '2':u'೨', '3':u'೩', '4':u'೪'
, '5':u'೫', '6':u'೬', '7':u'೭', '8':u'೮', '9':u'೯'}

#マラヤーラム数字(マラヤーラム語: インド南部の主にケーララ州)
mal2num = {u'൦':'0', u'൧':'1', u'൨':'2', u'൩':'3', u'൪':'4'
, u'൫':'5', u'൬':'6', u'൭':'7', u'൮':'8', u'൯':'9'}
num2mal = {'0':u'൦', '1':u'൧', '2':u'൨', '3':u'൩', '4':u'൪'
, '5':u'൫', '6':u'൬', '7':u'൭', '8':u'൮', '9':u'൯'}

#タミル数字(タミル語: 南インドタミル・ナードゥ州の公用語、
# スリランカとシンガポールでは国の公用語の一つ)
tam3num = {u'௦':'0', u'௧':'1', u'௨':'2', u'௩':'3', u'௪':'4'
, u'௫':'5', u'௬':'6', u'௭':'7', u'௮':'8', u'௯':'9'}
num2tam = {'0':u'௦', '1':u'௧', '2':u'௨', '3':u'௩', '4':u'௪'
, '5':u'௫', '6':u'௬', '7':u'௭', '8':u'௮', '9':u'௯'}

#ベンガル数字(ベンガル語とアッサム語)
ban2num = {u'০':'0', u'১':'1', u'২':'2', u'৩':'3', u'৪':'4'
, u'৫':'5', u'৬':'6', u'৭':'7', u'৮':'8', u'৯':'9'}
num2ban = {'0':u'০', '1':u'১', '2':u'২', '3':u'৩', '4':u'৪'
, '5':u'৫', '6':u'৬', '7':u'৭', '8':u'৮', '9':u'৯'}

#オリヤー数字(オリヤー語)
ori2num = {u'୦':'0', u'୧':'1', u'୨':'2', u'୩':'3', u'୪':'4'
, u'୫':'5', u'୬':'6', u'୭':'7', u'୮':'8', u'୯':'9'}
num2ori = {'0':u'୦', '1':u'୧', '2':u'୨', '3':u'୩', '4':u'୪'
, '5':u'୫', '6':u'୬', '7':u'୭', '8':u'୮', '9':u'୯'}

#ビルマ数字(ビルマ語: ミャンマー連邦の公用語)
bur2num = {u'၀':'0', u'၁':'1', u'၂':'2', u'၃':'3', u'၄':'4'
, u'၅':'5', u'၆':'6', u'၇':'7', u'၈':'8', u'၉':'9'}
num2bur = {'0':u'၀', '1':u'၁', '2':u'၂', '3':u'၃', '4':u'၄'
, '5':u'၅', '6':u'၆', '7':u'၇', '8':u'၈', '9':u'၉'}

#クメール数字(クメール語: カンボジアの公用語)
khm2num = {u'០':'0', u'១':'1', u'២':'2', u'៣':'3', u'៤':'4'
, u'៥':'5', u'៦':'6', u'៧':'7', u'៨':'8', u'៩':'9'}
num2khm = {'0':u'០', '1':u'១', '2':u'២', '3':u'៣', '4':u'៤'
, '5':u'៥', '6':u'៦', '7':u'៧', '8':u'៨', '9':u'៩'}

#タイ数字
tha2num = {u'๐':'0', u'๑':'1', u'๒':'2', u'๓':'3', u'๔':'4'
, u'๕':'5', u'๖':'6', u'๗':'7', u'๘':'8', u'๙':'9'}
num2tha = {'0':u'๐', '1':u'๑', '2':u'๒', '3':u'๓', '4':u'๔'
, '5':u'๕', '6':u'๖', '7':u'๗', '8':u'๘', '9':u'๙'}

#ラーオ数字(ラーオ語: ラオスの公用語)
lao2num = {u'໐':'0', u'໑':'1', u'໒':'2', u'໓':'3', u'໔':'4'
, u'໕':'5', u'໖':'6', u'໗':'7', u'໘':'8', u'໙':'9'}
num2lao = {'0':u'໐', '1':u'໑', '2':u'໒', '3':u'໓', '4':u'໔'
, '5':u'໕', '6':u'໖', '7':u'໗', '8':u'໘', '9':u'໙'}

#チベット数字(チベット語・ゾンカ語)
tib2num = {u'༠':'0', u'༡':'1', u'༢':'2', u'༣':'3', u'༤':'4'
, u'༥':'5', u'༦':'6', u'༧':'7', u'༨':'8', u'༩':'9'}
num2tib = {'0':u'༠', '1':u'༡', '2':u'༢', '3':u'༣', '4':u'༤'
, '5':u'༥', '6':u'༦', '7':u'༧', '8':u'༨', '9':u'༩'}

# , u'':'0', u'':'1', u'':'2', u'':'3', u'':'4'
# , u'':'5', u'':'6', u'':'7', u'':'8', u'':'9'

## ¥(asciiのバックスラッシュを全角の円マーク以外と対応) ##
if yen==None: #Noneの指定なら、処理から除外
if '\\' in han2zen:
del han2zen['\\']
if '\\' in asc2zen:
del asc2zen['\\']
if u'¥' in zen2han:
del zen2han[u'¥']
if u'¥' in zen2asc:
del zen2asc[u'¥']
if u'\' in zen2han:
del zen2han[u'\']
if u'\' in zen2asc:
del zen2asc[u'\']
elif not yen==u'¥': #u'¥'以外の指定なら、それを対象に
han2zen['\\'] = yen
asc2zen['\\'] = yen
han2zen[u'¥'] = yen # 文中のu'¥'も指定文字へ変更
asc2zen[u'¥'] = yen

zen2han[yen] = '\\'
zen2asc[yen] = '\\'

## モード設定により辞書を選択 ##
md = mode.lower() #文字列を小文字でmode判定 2012-01-14
if not my_dic=={}: #my_dic指定時は
conv_dic = my_dic # my_dic指定の辞書を置替辞書に
elif (md == None #99.モードをNoneとすることで空辞書指定を可能に
or md == 'none'):
conv_dic = {}
else:
#print '####', md
try:
conv_dic = eval(md)
except:
conv_dic = han2kata # 1.半角カタカナを全角カタカナへ(既定値)

## 辞書の修正 ##
if not alt_dic=={}: #辞書要素があるなら
for key in alt_dic: # それらを置替辞書conv_dicに追加
conv_dic[key] = alt_dic[key]
if not len(del_list)==0: #除外リストに要素があるなら
for del_key in del_list: # それらが
if del_key in conv_dic: # 置替辞書conv_dicにあるなら
del conv_dic[del_key] # 除外

if not len(pass_list)==0: #除外リストに要素があるなら 2012-01-24
for pass_key in pass_list: # それらを置替辞書conv_dicに
conv_dic[pass_key] = pass_key # キーと同じ値で追加


## 文字列の先頭からの処理の為の頭文字別の辞書を作成 ##
key_dic={} #{u'カ':[u'カ', u'カ゛']}の様な辞書を作成
key_len_dic={}
for key in conv_dic:
if key[0] in key_dic:
key_dic[key[0]].append(key)
else:
key_dic[key[0]] = [key]
if key[0] in key_len_dic:
key_len_dic[key[0]].append(len(key))
else:
key_len_dic[key[0]] = [len(key)]
for k in key_dic: #作成した頭文字別のキー辞書の中身を
key_dic[k].sort() # 整列した上で
key_dic[k].reverse() # 逆順に。長いものからcheckする様に
for k in key_len_dic:
key_len_dic[k]=list(set(key_len_dic[k]))
key_len_dic[k].sort()
key_len_dic[k].reverse()

if debug ==11: # 11のときのみ以下のdebug出力
print key_len_dic
## 正順比較での置替文字列の作成 ##
o = u'%s' % (unicode(s)) #
z = u'' #処理文字追記用文字列変数の初期化
end = len(o) #文字列の長さを取得
i = 0 #文字開始位置のアドレス
while i => /
"""
print __doc__
print 'orignal text'
print 'testに次の様に文字列を代入し'
print '>>> test=u\"\"\"%s\"\"\"' % (test)
mode_names={ 'han2kata' :u'# 1.半角カナを全角カタカナへ'
, 'kata2han' :u'# 2.全角カタカナを半角カナへ'
, 'han2hira' :u'# 3.半角カタカナを全角ひらがなへ'
, 'hira2han' :u'# 4.全角ひらがなを半角カナへ'

, 'asc2zen' :u'# 5.半角英数記号を全角へ'
, 'zen2asc' :u'# 6.全角英数記号を半角へ'
, 'han2zen' :u'# 7.半角カナ英数記号を全角へ'
, 'zen2han' :u'# 8.全角仮名英数記号を半角へ'

, 'kata2hira':u'# 9.全角カタカナを全角ひらがなへ'
, 'hira2kata':u'#10.全角ひらがなを全角カタカナへ'
, 'kana2han' :u'#11.全角かなを半角カナへ'

, 'num2zen' :u'#12.半角算用数字を全角算用数字へ'
, 'num2han' :u'#13.全角算用数字を半角算用数字へ'
, 'num2knm' :u'#14.半角算用数字を普通の漢数字へ'
, 'knm2num' :u'#15.普通の漢数字を半角算用数字へ'

, 'num2dai' :u'#16.半角算用数字を大字表記数字へ'
, 'dai2num' :u'#17.大字表記数字を半角算用数字へ'

, 'knm2dai' :u'#18.普通の漢数字を大字表記数字へ'
, 'dai2knm' :u'#19.大字表記数字を普通の漢数字へ'
}
modes=[ 'han2kata', 'kata2han', 'han2hira', 'hira2han'
, 'asc2zen', 'zen2asc', 'zen2han', 'han2zen'
, 'kata2hira', 'hira2kata', 'kana2han'
, 'num2zen', 'num2han', 'num2knm', 'knm2num'
, 'num2dai', 'dai2num', 'knm2dai', 'dai2knm'
]
n = 1
#全modeでtest文字列を変換
for m in modes:
print
print u'%3d%sの変換は' % (n, mode_names[m][3:])
print '>>> zen_conv(test, mode=\'%s\', debug=1)' % (m)
diff(test, zen_conv(test, mode=m, debug=1))
n += 1
#英数記号を含むmodeで「¥」を「\」で処理
ascmodes=['zen2han','han2zen', 'asc2zen', 'zen2asc']
for m in ascmodes:
print
print u'%3d%sの変換でyen=u\'\\'とすると' % (n, mode_names[m][3:])
print u'>>> zen_conv(test, mode=\'%s\', yen=u\'\\', debug=1)' % (m)
print zen_conv(test, mode=m, yen=u'\', debug=1)
n += 1
#英数記号を含むmodeで「¥」や「\」の処理を外す
for m in ascmodes:
print
print u'%3d%sの変換でyen=Noneとすると' % (n, mode_names[m][3:])
print u'>>> zen_conv(test, mode=\'%s\', yen=None, debug=1)' % (m)
print zen_conv(test, mode=m, yen=None, debug=1)
n += 1
m = 'kata2han'
print u'%3d%sの変換でdel_list=[u\'パ\', u\'プ\']とすると' % (n, mode_names[m][3:])
print u'>>> zen_conv(test, mode=\'%s\', del_list=[u\'パ\', u\'プ\'], debug=1)' % (m)
print zen_conv(test, mode=m, del_list=[u'パ', u'プ'], debug=1)
n += 1
m = 'kata2han'
print u'%3d%sの変換でalt_dic={u\'パ\':u\'パ\', u\'->\':u\'→\'}, del_list=[u\'パ\', u\'プ\']とすると' % (n, mode_names[m][3:])
print u'>>> zen_conv(test, mode=\'%s\', alt_dic={u\'パ\':u\'パ\', u\'->\':u\'→\'}, del_list=[u\'パ\', u\'プ\'], debug=0)' % (m)
print zen_conv(test, mode=m
, alt_dic={u'->':u'→', u'パ':u'パ'}
, del_list=[u'パ', u'プ']
, debug=0)
n += 1

def _test2():
u"""
モード名関数のテスト用関数
"""
test = u'''半角片仮名 : アカサタナハマヤラワ ガジヅベポ ヴィ
全角片仮名 : アカサタナハマヤラワ ガジヅベポ ヴィ
全角平仮名 : あかさたなはまやらわ がじづべぽ ヴぃ
半角英数記号: 012<-+-*/->
全角英数記号: 012←+−×÷→
'''
print u'''>>> test = u\'\'\'半角片仮名 : アカサタナハマヤラワ ガジヅベポ ヴィ
全角片仮名 : アカサタナハマヤラワ ガジヅベポ ヴィ
全角平仮名 : あかさたなはまやらわ がじづべぽ ヴぃ
半角英数記号: 012<-+-*/->
全角英数記号: 012←+−×÷→
\'\'\''''
print u'\n# 1.半角カタカナを全角カタカナへ'
print '>>> han2kata(test)'
print han2kata(test)
print u'\n# 2.全角カタカナを半角カタカナへ'
print '>>> kata2han(test)'
print kata2han(test)

print u'# 3.半角カタカナを全角ひらがなへ'
print '>>> han2hira(test)'
print han2hira(test)
print u'\n# 4.全角ひらがなを半角カタカナへ'
print '>>> hira2han(test)'
print hira2han(test)

print u'\n# 5.半角英数記号を全角英数記号へ'
print '>>> asc2zen(test)'
print asc2zen(test)
print u'\n# 6.全角英数記号を半角英数記号へ'
print '>>> zen2asc(test)'
print zen2asc(test)

print u'\n# 7.半角カタカナ英数記号を全角へ'
print '>>> han2zen(test)'
print han2zen(test)
print u'\n# 8.全角仮名文字英数記号を半角へ'
print '>>> zen2han(test)'
print zen2han(test)

print u'\n# 9.全角カタカナを全角ひらがなへ'
print '>>> kata2hira(test)'
print kata2hira(test)
print u'\n#10.全角ひらがなを全角カタカナへ'
print '>>> hira2kata(test)'
print hira2kata(test)

print u'\n#11.全角平片仮名を半角カタカナへ'
print '>>> kana2han(test)'
print kana2han(test)

print u'\n#12.半角英数記号を全角へ&演算子矢印置替追加'
print '>>> asc2zen(test, alt_dic={\'+\':u\'+\', \'-\':u\'−\', \'*\':u\'×\', \'/\':u\'÷\', \'<-\':u\'←\', \'->\':u\'→\'})'
print asc2zen(test, alt_dic={'+':u'+', '-':u'−'
, '*':u'×', '/':u'÷'
, '<-':u'←', '->':u'→'}
, debug=1)

print u'\n#13.半角英数記号を全角へ&数字除外'
print '>>> asc2zen(test, alt_dic={\'+\':u\'+\', \'-\':u\'−\', \'*\':u\'×\', \'/\':u\'÷\', \'<-\':u\'←\', \'->\':u\'→\'})'
print asc2zen(test, del_list=['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], debug=1)

print u'\n#13.半角英数記号を全角へ&数字除外'
print '>>> asc2zen(test, alt_dic={\'+\':u\'+\', \'-\':u\'−\', \'*\':u\'×\', \'/\':u\'÷\', \'<-\':u\'←\', \'->\':u\'→\'})'
print asc2zen(test, del_list=['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], debug=1)

def _test3():
knum = { u'億弐百参万四千':102034000
, u'壱億弐百参万四千':102034000
, u'壱億弐百参万四千五':102034005
, u'一二三四五':12345
, u'一二三四万五千':12345000
, u'一二億三四万五千':1200345000
, u'千':1000}
for i in knum:
ans = str2int(i)
if ans == knum[i]:
r = u'='
else:
r = u'≠'
print u'%14d %s %s' % (ans, r, i)

def _test4():
test = u"""
漢数字: 「金一拾二億三千四百五拾六万七千八百九拾円」、〇、廿
大字: 「金壱千万弐千参拾四円」、壹貮參肆伍陸柒捌玖
全角英数記号: 1234567890,abc,ABC,#$%¥ , → ⇒ ÷
半角英数記号: 1234567890, abc, ABC, #$%\\ ,-> => /
"""
print all2int(test)

def _test5():
print dai2num(u'「領収額 金壱億弐百参万円也」「面積 百弐拾参・四五坪」')
try:
print str2int(u'壱億弐百参万円')
except Exception, e:
print e
pass
print str2int(u'百弐拾参')
print str2int(u'「領収額 金壱億弐百参万円也」「面積 百弐拾参・四五坪」')
print all2int(u'「領収額 金壱億弐百参万円也」「面積 百弐拾参・四五坪」')
print int('h123')

def _test6():
test = u"""
#全数字文字を含む文字列: '拾百千万億兆京垓予穣溝潤正'
#全数字文字を含む文字列: '零千壱正弐潤参溝四穣五予六垓七京八兆九億壱万弐千参百四拾五'
#半角算用数字 : '0123456789'
#全角算用数字 : '0123456789'
#全角漢数字 : '〇一二三四五六七八九'
#全角漢数字(大字) : '〇壱弐参零壹貮貳參肆伍陸柒漆質捌玖'
#全角漢数字(大字) : '零壹贰貳叁參肆伍陆陸柒柒漆捌玖'
#デーヴァナーガリー数字: '०१२३४५६७८९'
#ペルシア数字 : '۰۱۲۳۴۵۶۷۸۹'
#アラビア・インド数字 : '٠١٢٣٤٥٦٧٨٩'
#グジャラーティー数字 : '૦૧૨૩૪૫૬૭૮૯'
#グルムキー数字 : '੦੧੨੩੪੫੬੭੮੯'
#テルグ数字 : '౦౧౨౩౪౫౬౭౮౯'
#カンナダ数字 : '೦೧೨೩೪೫೬೭೮೯'
#マラヤーラム文字 : '൦൧൨൩൪൫൬൭൮൯'
#タミル数字 : '௦௧௨௩௪௫௬௭௮௯'
#ベンガル数字 : '০১২৩৪৫৬৭৮৯'
#オリヤー数字 : '୦୧୨୩୪୫୬୭୮୯'
#ビルマ数字 : '၀၁၂၃၄၅၆၇၈၉'
#クメール数字 : '០១២៣៤៥៦៧៨៩'
#タイ数字 : '๐๑๒๓๔๕๖๗๘๙'
#ラーオ数字 : '໐໑໒໓໔໕໖໗໘໙'
#チベット数字 : '༠༡༢༣༤༥༦༧༨༩'
"""
tst_tpl = (
('dev2num', u'20.デーヴァナーガリー数字を数へ'), ('num2dev', u'21.数をデーヴァナーガリー数字へ'),
('per2num', u'22.ペルシア数字を半角算用数字へ'), ('num2per', u'23.半角算用数字をペルシア数字へ'),
('ara2num', u'24.アラビア・インド数字を数字へ'), ('num2ara', u'25.数字をアラビア・インド数字へ'),
('guj2num', u'26.グジャラーティー数字を数字へ'), ('num2guj', u'27.数字をグジャラーティー数字へ'),
('gur2num', u'28.グルムキー数字 を 半角数字へ'), ('num2gur', u'29.半角数字 を グルムキー数字へ'),
('tel2num', u'30.テルグ数字 を 半角算用数字へ'), ('num2tel', u'31.半角算用数字 を テルグ数字へ'),
('kan2num', u'32.カンナダ数字を半角算用数字へ'), ('num2kan', u'33.半角算用数字をカンナダ数字へ'),
('mal2num', u'34.マラヤーラム数字を半角数字へ'), ('num2mal', u'35.半角数字をマラヤーラム数字へ'),
('tam3num', u'36.タミル数字 を 半角算用数字へ'), ('num2tam', u'37.半角算用数字 を タミル数字へ'),
('ban2num', u'38.ベンガル数字を半角算用数字へ'), ('num2ban', u'39.半角算用数字をベンガル数字へ'),
('ori2num', u'40.オリヤー数字を半角算用数字へ'), ('num2ori', u'41.半角算用数字をオリヤー数字へ'),
('bur2num', u'42.ビルマ数字 を 半角算用数字へ'), ('num2bur', u'43.半角算用数字 を ビルマ数字へ'),
('khm2num', u'44.クメール数字を半角算用数字へ'), ('num2khm', u'45.半角算用数字をクメール数字へ'),
('tha2num', u'46.タイ数字 を 半角算用数字へ'), ('num2tha', u'47.半角算用数字 を タイ数字へ'),
('lao2num', u'48.ラーオ数字 を 半角算用数字へ'), ('num2lao', u'49.半角算用数字 を ラーオ数字へ'),
('tib2num', u'50.チベット数字を半角算用数字へ'), ('num2tib', u'51.半角算用数字をチベット数字へ'))
for i in tst_tpl:
print
cmd = 'diff(test, %s(test))' % (i[0])
print '>>>%s' % (cmd)
print i[1]
eval(cmd)
print '>>>print all2int(test)'
print test
print u'文中の数字を整数で表示'
print all2int(test)

def print_str(s):
print s

if __name__ == '__main__':
_test6()
posted by Mire at 16:02 | Comment(0) | TrackBack(0) | Pythonプログラミング | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
月額見放題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年以上新しい記事の投稿がないブログに表示されております。