将东部阿拉伯数字转换为西方阿拉伯数字

时间:2013-01-24 16:32:22

标签: python

实现这一目标的最佳方法是什么?

http://en.wikipedia.org/wiki/Eastern_Arabic_numerals

2 个答案:

答案 0 :(得分:10)

使用序号映射unicode.translate

S.translate(table) -> unicode

Return a copy of the string S, where all characters have been mapped
through the given translation table, which must be a mapping of
Unicode ordinals to Unicode ordinals, Unicode strings or None.
Unmapped characters are left untouched. Characters mapped to None
are deleted.

示例:

table = {1776: 48,  # 0 
         1777: 49,  # 1
         1778: 50,  # 2
         1779: 51,  # 3
         1780: 52,  # 4
         1781: 53,  # 5
         1782: 54,  # 6
         1783: 55,  # 7
         1784: 56,  # 8
         1785: 57}  # 9


u'some ۰۱۲ of ۳۴۵ it ۶۷ is ۸۹ normal text'.translate(table)

输出:

u'some 012 of 345 it 67 is 89 normal text'

答案 1 :(得分:2)

像这样:

eastern_to_western = {"٠":"0","١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9"}
int(''.join([eastern_to_western[c] for c in '٧٧٧٣']))

7773