はじめに
株式市場の分析に Python を活用しているのですが、大きな数字をあつかう際に、「万、億、兆」といった、命数法を使いたくなりました。Apple社の昨年度の株式時価総額は307兆9029億200万円と示す方が、307902902000000円よりも日本人にはわかりやすいです。このような命数法は日本、中国、韓国でも利用されています。cnum は数値データから各国の命数法に合わせた文字列を生成するためのパッケージです。
インストール方法
以下のコマンドでインストールをします。
pip install cnum
以下のようにパッケージのメソッドに、数値データを引数として渡して呼び出すことで、各国の命数法の文字列を取得できます。(韓国の小数点以下の命数法がわからなかったので、日本の命数法を使用しています。もしわかる方がいらっしゃいましたら、コメントをお願いいたします。)
import cnum
# 日本の命数法で文字列を返す。
cnum.jp(123456789.12)
'1億2345万6789 1分2厘'
# 中国(簡体字)の命数法で文字列を返す。
cnum.scn(123456789.12)
'1亿2345万6789 1分2厘'
# 中国(繁体字)の命数法で文字列を返す。
cnum.tcn(123456789.12)
'1億2345萬6789 1分2厘'
# 韓国の命数法で文字列を返す。
cnum.kr(123456789.12)
'1억2345만6789 1分2厘'
各メソッドに指定する数値データは、int型、float型、str型 を受け付けています。
int型、float型には表現できる数値に制限があるため、str型を使用することが好ましいです。
import cnum
# 引数にfloat型を指定
cnum.jp(123456789123456789.12345)
'1 2分3厘4毛5糸6忽' <--- 不正
# 引数にstr型を指定
cnum.jp('123456789123456789.12345')
'12京3456兆7891億2345万6789 1分2厘3毛4糸5忽'
命数法のルールを変更した場合は num2cnumメソッドを呼び出してください。各国のメソッドと同様に、第一引数では変換対象の数値データを指定しますが、第二引数には整数のルールを記したリストを、第三引数には小数のルールを記したリストを指定します。下記の例は、jpメソッドとほぼ同様の整数ルールを記したリストを指定していますが、3番目の要素に '千' を指定したため、'1億2345万6千789'と出力されました。このように、ユーザがリストを変更することで、任意の命数法を実装できます。
cnum.num2cnum(
123456789,
[
None, None, '千', '万',
None, None, None, '億',
None, None, None, '兆',
None, None, None, '京',
None, None, None, '垓',
None, None, None, '𥝱',
None, None, None, '穣',
None, None, None, '溝',
None, None, None, '澗',
None, None, None, '正',
None, None, None, '載',
None, None, None, '極',
None, None, None, '恒河沙',
None, None, None, '阿僧祇',
None, None, None, '那由他',
None, None, None, '不可思議',
None, None, None, '無量大数'
],
[
'分', '厘', '毛', '糸', '忽'
]
)
'1億2345万6千789'
関連リンク
GitHub: https://github.com/town-paddy/cnum
PyPI: https://pypi.org/project/cnum/