7

漢字数字からアラビア数字への変換/翻訳を行うPythonのオープンソースライブラリはありますか?

インプット:10億2千9百万
アウトプット:1,029,000,000

インプット:1億6,717万2,600
アウトプット:167,172,600

インプット:3,139百万
アウトプット:3,139,000,000

日本語の数体系 : http://en.wikipedia.org/wiki/Japanese_numerals

Web ベースのコンバーター : http://www.sljfaq.org/cgi/kanjinumbers.cgi

4

2 に答える 2

2

これは機能するはずです:

import kanjinums
kanjinums.kanji2num("五百十一")

kanjinumsをダウンロードしてインストールした後、残念ながらpipからは入手できません。

編集:これは基本的な数字に対してのみ機能し、前述のような複雑なケースでは機能しません。

小さな変更を加えると、これは実際に機能します。たとえば、次のようになります。

3139*kanjinums.kanji2num("百万")
3139000000
于 2013-02-19T22:03:23.567 に答える
1

これは、実際には関数で比較的簡単に実行できます。

def convert_kanji(self, zahl):
    japnumber = ("兆", "億",  "万")
    jap_factors = {
            "兆": 1000000000000,
            "億": 100000000,
            "万": 10000
            }

    #Define the variables
    converted_number = 0
    already_found = False
    found_kanji_previous = 0

    try: #If the number can be returned as an integer (i.e. no Kanji in it) -> do it
        return(int(zahl)) 
    except ValueError: #If not, disintegrate it
        for key in japnumber: #do it for every Kanji
            if key in zahl: #If it has been found in the original string:
                gef_kanji = zahl.find(key) #mark, which Kanji has been found
                if not already_found: #if it is the first kanji:
                    intermediate_step = int(zahl[:gef_kanji]) * jap_factors[key] #Convert the number in front of the Kanji with the appropriate factor
                    converted_number = intermediate_step
                    already_found = True
                    found_kanji_previous = gef_kanji
                else: #for sll other kanjis
                    intermediate_step = int(zahl[found_kanji_previous+1:gef_kanji]) * jap_factors[key]
                    converted_number = converted_number + intermediate_step #sum them up
                    found_kanji_previous = gef_kanji

        if len(zahl) > (found_kanji_previous+1):
            converted_number = converted_number + int(zahl[found_kanji_previous+1:])
        return converted_number

これはまだ比較的単純です。2314兆3424億3422万2342の形式の数値のみを受け入れることができます。

また、これは実際には長い間私の最初のプログラムだったので、コードは非常に悪いかもしれません. しかし、それはあなたにとって良い出発点かもしれません。

私は実際に現在、日本語の数字を読みやすい西洋の数字に変換する簡単なコンバーターに取り組んでいます (たとえば、231億を「231億」に変換します。実際には既にそれを行っています)。全角文字、数字を完全に漢字にするなど、やるべきことがたくさんあると思います。すべてに取り組んだら、同じように漢字としてアップロードするかもしれません:D

于 2013-06-21T18:28:01.150 に答える