如何将印度语中的金额转换为单词?
我正在使用 num2words 库,但它在呈现“十万”和“千万”时呈现错误的单词集。
例如:
num2words(903614.55, lang='en-IN')
其印刷'nine hundred and three thousand, six hundred and fourteen point five five'
但实际的印度金额介绍应该是nine lakhs three thousand six hundred fourteen and five five paisa。
然后我尝试了下面的代码:
def num2words(num):
under_20 = ['Zero','One','Two','Three','Four','Five','Six','Seven','Eight','Nine','Ten','Eleven','Twelve','Thirteen','Fourteen','Fifteen','Sixteen','Seventeen','Eighteen','Nineteen']
tens = ['Twenty','Thirty','Forty','Fifty','Sixty','Seventy','Eighty','Ninety']
above_100 = {100: 'Hundred',1000:'Thousand', 100000:'Lakhs', 10000000:'Crores'}
if num < 20:
return under_20[num]
if num < 100:
return tens[(int)(num/10)-2] + ('' if num%10==0 else ' ' + under_20[num%10])
# find the appropriate pivot - 'Million' in 3,603,550, or 'Thousand' in 603,550
pivot = max([key for key in above_100.keys() if key <= num])
return num2words((int)(num/pivot)) + ' ' + above_100[pivot] + ('' if num%pivot==0 else ' ' + num2words(num%pivot))
Run Code Online (Sandbox Code Playgroud)
但现在错误来了
TypeError:列表索引必须是整数或切片,而不是小数。
我的问题是小数,整数工作正常。
解决方案很简单,而且事后看来,错误是显而易见的。
只需在调用 num2words 时将 en-IN 替换为 en_IN 即可。不需要任何自定义代码。我也被这个烫伤了。
num2words.num2words(123456, lang='en_IN')
Run Code Online (Sandbox Code Playgroud)
回报
one lakh, twenty-three thousand, four hundred and fifty-six
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4314 次 |
| 最近记录: |