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

Python中日文数字到阿拉伯数字的转换,python,translation,machine-translation,Python,Translation,Machine Translation,Python中是否有一个开放源代码库可以进行汉字数字到阿拉伯数字的转换/翻译 输入:10億2.千9百万 产出:1029000000 输入:1億6,717万2600 产出:167172600 输入:3139百万 产出:3139000000 日本数字系统: 基于Web的转换器:这应该可以工作: import kanjinums kanjinums.kanji2num("五百十一") 下载和安装后,很遗憾,pip无法提供此功能 编辑:这只适用于基本数字,而不适用于上述复杂情况 只需稍作修改,即可实际

Python中是否有一个开放源代码库可以进行汉字数字到阿拉伯数字的转换/翻译

输入:10億2.千9百万
产出:1029000000

输入:1億6,717万2600
产出:167172600

输入:3139百万
产出:3139000000

日本数字系统:

基于Web的转换器:

这应该可以工作:

import kanjinums
kanjinums.kanji2num("五百十一")
下载和安装后,很遗憾,pip无法提供此功能

编辑:这只适用于基本数字,而不适用于上述复杂情况

只需稍作修改,即可实际工作,例如:

3139*kanjinums.kanji2num("百万")
3139000000

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

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

上传,谢谢您的回复。不幸的是,该模块只进行简单的字典查找,适合简单的汉字数字,但不支持像我提到的示例那样的复杂转换。是的,我意识到了这一点。很抱歉看来我需要能够更好地理解汉字,以便提供有用的信息。您需要编写一个函数或类,通过将字符串替换为表达式(作为一种方式)来转换数字円 是日元(货币)的字符。编辑:我的坏。我已经从示例输入行中删除了该标志符号。