如何在django中将正常数字转换为阿拉伯数字

时间:2014-10-29 09:03:17

标签: python django

我有一个数字列表[1,2,3,....]

现在我想用django将它们转换成阿拉伯数字。

有可能吗?欢迎任何想法。

4 个答案:

答案 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"))

输出: i screen it cause it wasn't appear like this in my post