gpt4 book ai didi

python - String.maketrans 用于英语和波斯语数字

转载 作者:太空狗 更新时间:2023-10-29 22:02:25 25 4
gpt4 key购买 nike

我有这样一个函数:

persian_numbers = '۱۲۳۴۵۶۷۸۹۰'
english_numbers = '1234567890'
arabic_numbers = '١٢٣٤٥٦٧٨٩٠'

english_trans = string.maketrans(english_numbers, persian_numbers)
arabic_trans = string.maketrans(arabic_numbers, persian_numbers)

text.translate(english_trans)
text.translate(arabic_trans)

我希望它将所有阿拉伯语和英语数字翻译成波斯语。但是 Python 说:

english_translate = string.maketrans(english_numbers, persian_numbers)
ValueError: maketrans arguments must have same length

我尝试使用 Unicode utf-8 对字符串进行编码,但我总是遇到一些错误!有时问题是阿拉伯字符串!您知道这项工作的更好解决方案吗?

编辑:

问题似乎是 ASCII 中的 Unicode 字符长度。像“1”这样的阿拉伯数字是两个字符——我用 ord() 找到了它。长度问题从这里开始:-(

最佳答案

请参阅将所有字符串转换为 UTF8 的 unidecode 库。这在输入不同语言的数字时非常有用。

在 Python 2 中:

>>> from unidecode import unidecode
>>> a = unidecode(u"۰۱۲۳۴۵۶۷۸۹")
>>> a
'0123456789'
>>> unidecode(a)
'0123456789'

在 Python 3 中:

>>> from unidecode import unidecode
>>> a = unidecode("۰۱۲۳۴۵۶۷۸۹")
>>> a
'0123456789'
>>> unidecode(a)
'0123456789'

关于python - String.maketrans 用于英语和波斯语数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11879025/

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