gpt4 book ai didi

python - 如何在Python中将阿拉伯文本转换为数字

转载 作者:行者123 更新时间:2023-12-01 00:03:13 24 4
gpt4 key购买 nike

使用Python,我试图编写一个简单的代码,将阿拉伯文本转换为数字。我使用的代码可以找到here我正在尝试将其从英语改编为阿拉伯语。由于未知的原因,它似乎效果不太好:

      def text2int(textnum, numwords={}):
if not numwords:
units = [
"", "واحد", "اثنان", "ثلاثة", "أربعة", "خمسة", "ستة", "سبعة", "ثمانية",
"تسعة",
"عشرة", "أحد عشر", "اثنا عشر", "ثلاثة عشر", "أربعة عشر", "خمسة عشر",
"ستة عشر", "سبعة عشر", "ثمانية عشر",
"تسعة عشر"
]

tens = [
"عشرون", "ثلاثون", "أربعون", "خمسون", "ستون", "سبعون", "ثمانون",
"تسعون"
]

scales = ["مية", "الف", "مليون", "مليار", "ترليون"]

numwords["و"] = (
1, 0)
for idx, word in enumerate(units): numwords[word] = (1, idx)
for idx, word in enumerate(tens): numwords[word] = (1, idx * 10)
for idx, word in enumerate(scales): numwords[word] = (10 ** (idx * 3 or 2), 0)

current = result = 0
for word in textnum.split():
if word not in numwords:
raise Exception("Illegal word: " + word)

scale, increment = numwords[word]
current = current * scale + increment
if scale > 100:
result += current
current = 0

return result + current

print (text2int("خمسة و عشرون"))

我得到的方法的输出是5,这是完全错误的,它应该是25。我有办法解决这个问题吗?而且,秤根本不起作用。

最佳答案

尝试更改您的 tens 变量

tens = ["", "", 
"عشرون", "ثلاثون", "أربعون", "خمسون", "ستون", "سبعون", "ثمانون",
"تسعون" ]

即添加 2 个空字符串,或者,您可以这样更改此行:

for idx, word in enumerate(tens):     numwords[word] = (1, (idx + 2) * 10)

正如有人在评论中建议的那样,仅在 idx+2 两边添加括号

关于python - 如何在Python中将阿拉伯文本转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60183378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com