Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 11, 2015 07:42:54

monster_kot
Зарегистрирован: 2015-02-11
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Декодирование русского текста ASCII формата из RTF файла

Здравствуйте!
Помогите разобраться..

Если пишу так

st = '\xd0\xe0\xf1\xf7\xe5\xf2\xed\xfb\xe5 \xeb\xe8\xf1\xf2\xea\xe8'
st = st.decode('cp1251')
print st
Переменной st присваивается значение “Расчетные листки”

Если формирую строку для конвертации программно, получая ее из RTF файла:
st = header[header.find('{\\title ')+8:header.find('}', header.find('{\\title ')+8)].replace('\\\'', '\\x')
st = st.decode('cp1251')
print st
Переменной st присваивается значение “\xd0\xe0\xf1\xf7\xe5\xf2\xed\xfb\xe5 \xeb\xe8\xf1\xf2\xea\xe8”

Офлайн

#2 Фев. 11, 2015 10:24:50

monster_kot
Зарегистрирован: 2015-02-11
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Декодирование русского текста ASCII формата из RTF файла

Решение нашел!

def rtf_StrConv(instr):
   ret_str = ''
   i = 0
   while i < len(instr):
       if instr[i:i+2] == '\\\'':
           ret_str = ret_str+instr[i+2:i+4].decode('hex').decode('cp1251')
           i = i+4
       else:
           ret_str = ret_str+instr[i]
           i = i+1
   return ret_str
print rtf_StrConv(header[header.find('{\\title ')+8:header.find('}', header.find('{\\title ')+8)])

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version