我有一个数字列表[1,2,3,....]
现在我想用django将它们转换成阿拉伯数字。
有可能吗?欢迎任何想法。
答案 0 :(得分:4)
尝试此功能:
def enToArNumb(number):
dic = {
0:'۰',
1:'١',
2:'٢',
3:'۳',
4:'۴',
5:'۵',
6:'۶',
7:'۷',
8:'۸',
9:'۹',
.:'۰',
}
return dic.get(number)
并像这样使用它:
ar_numbers = [enToArNumb(num) for num in numbers]
答案 1 :(得分:1)
将(unicode)数字字符串转换为等效的" Arabic-Indic"数字你可以使用unicode.translate()
:
arabic_indic_trans = dict(
zip((ord(s) for s in u'0123456789'),
u'\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669')
)
>>> for s in u'0123456789', u'33342353', u'88192838743':
... print('{!r} -> {!r}'.format(s, s.translate(arabic_indic_trans)))
u'0123456789' -> u'\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669'
u'33342353' -> u'\u0663\u0663\u0663\u0664\u0662\u0663\u0665\u0663'
u'88192838743' -> u'\u0668\u0668\u0661\u0669\u0662\u0668\u0663\u0668\u0667\u0664\u0663'
这应该适用于Python 2和3。
要从整数转换,首先将整数转换为unicode字符串,然后翻译:
>>> for s in 1234567890, 33342353, 88192838743876487602873545683470:
... s = unicode(s) # Python 2 (s = str(s) for Python 3)
... print('{!r} -> {!r}'.format(s, s.translate(arabic_indic_trans)))
答案 2 :(得分:0)
这是中东地区翻译的方式,因为哈桑的答案使用的数字与标准阿拉伯数字 close 相似,但不相同。
def en_to_ar_num(number_string):
dic = {
'0': '۰',
'1': '١',
'2': '٢',
'3': '۳',
'4': '٤',
'5': '۵',
'6': '٦',
'7': '۷',
'8': '۸',
'9': '۹',
}
return "".join([dic[char] for char in number_string])
en_to_ar_num("124") # ١٢٤
答案 3 :(得分:0)
根据shakram02答案,如果英文数字带有破折号或字符串,您可以这样做将英语数字翻译为阿拉伯数字:
def en_to_ar_num(number_string):
lis=[]
dic = {
'0': '۰',
'1': '١',
'2': '٢',
'3': '۳',
'4': '٤',
'5': '۵',
'6': '٦',
'7': '۷',
'8': '۸',
'9': '۹',
}
for char in number_string:
if char in dic:
lis.append(dic[char])
else:
lis.append(char)
return "".join(lis)
打印:
print(en_to_ar_num("124-25-abc"))