Python中的日语数字转换为阿拉伯数字器
有没有一个开源的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
2 个回答
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亿转换成“23 billion 100 million”;其实它已经能做到这一点了)。我想还有很多工作要做,比如全角字符、完全用汉字表示的数字等等。如果我把这些都搞定了,我可能会像kanjinums那样上传它 :D
2
这个应该可以用:
import kanjinums
kanjinums.kanji2num("五百十一")
在下载并安装了kanjinums之后,就可以使用了,不过这个库不支持通过pip安装。
补充:这个方法只适用于基本的数字,对于复杂的情况就不行了。
经过一些小修改,这个方法实际上是可以工作的,比如:
3139*kanjinums.kanji2num("百万")
3139000000