LoginSignup
1
1

More than 1 year has passed since last update.

Python の数値を日本の命数法(万億兆)の文字列に変換するパッケージ cnum

Posted at

はじめに

株式市場の分析に 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/

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1