igor.kaistПозвольте уточнить, а почему не использовать более изящную и понятную конструкцию?try:
from repr import repr as rp
except:
rp=repr
....
# а дальше такое выражение есть
try:
t=chr(i)
except:
t='\x%02i'%(i)
try:
from repr import repr
except ImportError:
pass
является некорректной по сути по ряду причин:
1. синтаксис \x## требует два знака, образующих шестнадцатеричное число, у вас же используется %02i, который возвращает десятичное представление. Искренне надеюсь, что это была лишь опечатка и вы имели в виду %02x;
2. вторая причина, по которой это не может работать — пайтон анализирует escape-последовательности на стадии компиляции. В данном случае, он получит на вход бессмысленное выражение \x%0, о чем и сообщит ошибкой ValueError: invalid \x escape;
Т.к. у пайтона всё-таки есть некоторые спецификации, общие для всех реализаций, я очень сомневаюсь, что его поведение будет настолько отличаться даже для Symbian.
Вот моя реализация chr в случае, если он какого-то дьявола работает иногда некорректно:
def chr(i):
import __builtin__
try:
return __builtin__.chr(i)
except Exception:
return hex(i)[2:].decode('hex')