Mohsen Pahlevanzadeh wrote: > I completed my two functions, i say may be poeple can use them: > ######################################33 > def integerToPersian(number): > listedPersian = ['۰','۱','۲','۳','۴','۵','۶','۷','۸','۹'] > listedEnglish = ['0','1','2','3','4','5','6','7','8','9'] > returnList = list() > > for i in list(str(number)): > returnList.append(listedPersian[listedEnglish.index(i)]) > > return ''.join(returnList) > > def persianToInterger(persianNumber): > listedTmpString = list(persianNumber.decode("utf-8")) > returnList = list() > > for i in listedTmpString: > returnList.append(unicodedata.digit(i)) > > return int (''.join(str(x) for x in returnList))
There is also the str.translate() method which takes a translation dict. Characters not in that dict will be left unaltered: >>> persian = "۰۱۲۳۴۵۶۷۸۹" >>> english = "0123456789" >>> _p2e = str.maketrans(persian, english) >>> _e2p = str.maketrans(english, persian) >>> def persian_to_english(s): return s.translate(_p2e) ... >>> def english_to_persian(s): return s.translate(_e2p) ... >>> english_to_persian("alpha 12321 beta") 'alpha ۱۲۳۲۱ beta' >>> persian_to_english(_) 'alpha 12321 beta' [Advanced usage] If you prefer to get an error you can subclass dict: >>> class NoDigitError(Exception): ... pass ... >>> class StrictDict(dict): ... def __missing__(self, key): ... raise NoDigitError("Illegal codepoint #{}".format(key)) ... >>> _e2p = StrictDict(str.maketrans(english, persian)) >>> english_to_persian("543") '۵۴۳' >>> english_to_persian("x543") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 1, in english_to_persian File "<stdin>", line 3, in __missing__ __main__.NoDigitError: Illegal codepoint #120 -- https://mail.python.org/mailman/listinfo/python-list