Python中日文数字到阿拉伯数字的转换器

2024-09-29 23:22:56 发布

您现在位置:Python中文网/ 问答频道 /正文

Python中是否有一个开源库,可以将汉字数字转换为阿拉伯数字?在

输入:10ࠚ2千9百砎 产量:1029000000

输入:1億6717?2600
产量:167172600

输入:3139百manuform
产量:3139000000

日文数字系统:http://en.wikipedia.org/wiki/Japanese_numerals

基于Web的转换器:http://www.sljfaq.org/cgi/kanjinumbers.cgi


Tags: orgwebhttp系统wiki开源数字wikipedia
2条回答

这实际上可以在函数中相对容易地完成:

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ࠚ转换为“230亿1亿”;实际上它已经这样做了)。我想还有很多事情要做,比如全角字符、完全用汉字写的数字等等。如果我解决了所有这些问题,我可能会像kanjinums:D一样上传它

这应该是有效的:

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

在下载并安装kanjinums之后,不幸的是,pip无法使用它。在

编辑:这只适用于基本数字,不适用于上面提到的复杂情况。在

只需稍作修改,这将实际起作用,例如:

^{pr2}$

相关问题 更多 >

    热门问题