tn 新增 億~千億
tn/chinese/rules/cardinal.py
# 10001111, 1001111, 101111, 11111, 10111, 10011, 10001, 10000
ten_thousand = ((thousand | hundred | ten | digit) + insert('萬') +
(thousand
| (zero + rmpunct + hundred)
| (rmzero + rmpunct + zero + tens)
| (rmzero + rmpunct + rmzero + zero + digit)
| rmzero**4))
# add hundred_million
hundred_million =
_ten_thousand = ((thousand | (zero + hundred) | (rmzero + zero + rmpunct + tens) | (rmzero + rmzero + rmpunct + zero + digit)) + insert('万') +
(thousand
| (zero + rmpunct + hundred)
| (rmzero + rmpunct + zero + tens)
| (rmzero + rmpunct + rmzero + zero + digit)
| rmzero**4))
billion = ((ten_thousand | thousand | hundred | ten | digit) + insert('亿') +
_ten_thousand
|rmzero**8)
写了好久,测试下来看似对了, rmzero的位置好像有问题,但是不想改了,直接前处理把数字里的逗号给去了 如果有其他不对的话麻烦反馈一下
_ten_thousand = ((thousand | (zero + hundred) | (rmzero + zero + rmpunct + tens) | (rmzero + rmzero + rmpunct + zero + digit)) + insert('万') + (thousand | (zero + rmpunct + hundred) | (rmzero + rmpunct + zero + tens) | (rmzero + rmpunct + rmzero + zero + digit) | rmzero**4))
billion = ((ten_thousand | thousand | hundred | ten | digit) + insert('亿') + _ten_thousand |rmzero**8) 写了好久,测试下来看似对了, rmzero的位置好像有问题,但是不想改了,直接前处理把数字里的逗号给去了 如果有其他不对的话麻烦反馈一下
非常棒的解决方案,但是在对999,999,999做处理的时候,出来的结果是九百九十九,九十九万九千九百九十九
_ten_thousand = ((thousand | (zero + hundred) | (rmzero + zero + rmpunct + tens) | (rmzero + rmzero + rmpunct + zero + digit)) + insert('万') + (thousand | (zero + rmpunct + hundred) | (rmzero + rmpunct + zero + tens) | (rmzero + rmpunct + rmzero + zero + digit) | rmzero4)) billion = ((ten_thousand | thousand | hundred | ten | digit) + insert('亿') + _ten_thousand |rmzero8) 写了好久,测试下来看似对了, rmzero的位置好像有问题,但是不想改了,直接前处理把数字里的逗号给去了 如果有其他不对的话麻烦反馈一下
非常棒的解决方案,但是在对999,999,999做处理的时候,出来的结果是九百九十九,九十九万九千九百九十九
因为我写的这个逻辑,亿级别时,挪用原先的逗号位置判断就不对了。我的应用场景其实也用不到逗号,所以为了方便我直接前面预处理,你也可以自行修改rmpunct的组合位置。
_ten_thousand = ((thousand | (zero + hundred) | (rmzero + zero + rmpunct + tens) | (rmzero + rmzero + rmpunct + zero + digit)) + insert('万') + (thousand | (zero + rmpunct + hundred) | (rmzero + rmpunct + zero + tens) | (rmzero + rmpunct + rmzero + zero + digit) | rmzero4)) billion = ((ten_thousand | thousand | hundred | ten | digit) + insert('亿') + _ten_thousand |rmzero8) 写了好久,测试下来看似对了, rmzero的位置好像有问题,但是不想改了,直接前处理把数字里的逗号给去了 如果有其他不对的话麻烦反馈一下
非常棒的解决方案,但是在对999,999,999做处理的时候,出来的结果是九百九十九,九十九万九千九百九十九
因为我写的这个逻辑,亿级别时,挪用原先的逗号位置判断就不对了。我的应用场景其实也用不到逗号,所以为了方便我直接前面预处理,你也可以自行修改rmpunct的组合位置。