String.maketrans для английских и персидских чисел

У меня есть такая функция:

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)

Я хочу, чтобы он переводил все арабские и английские цифры на персидский язык. Но Питон говорит:

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

Я пытался кодировать строки с помощью Unicode utf-8, но всегда получал какие-то ошибки! Иногда проблема заключается в арабской строке! Вы знаете лучшее решение для этой работы?

РЕДАКТИРОВАТЬ:

Кажется, проблема заключается в длине символов Unicode в ASCII. Арабское число, такое как «۱», состоит из двух символов --, которые я узнаю с помощью ord(). Отсюда начинается проблема длины:-(

6
задан Filburt 9 August 2012 в 10:28
поделиться