С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
8 / 8 / 0
Регистрация: 09.02.2012
Сообщений: 48

Декодирование символов

18.02.2020, 14:05. Показов 1688. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Имеется следующая последовательность: cf f0 e8 e2 e5 f2 (Привет cp1251). Исходно получена из: \'cf\'f0\'e8\'e2\'e5\'f2 путем чтения строки типа вот так: tmpstr = str[i] + str[i+1]

Как её превратить в читаемый вид? В консоли utf-8

Спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.02.2020, 14:05
Ответы с готовыми решениями:

Декодирование строки
Здравствуйте. Есть сервер на питоне на http, и клиент. С клинта на сервер отправляется такая структура: JSON.stringify({ ...

Декодирование строки
На прошлой неделе мы сжимали строки, используя кодирование повторов. Теперь нашей задачей будет восстановление исходной строки обратно. ...

Кодирование / декодирование текста
подскажите пожалуйста какой - то алгоритм(c открытым ключом ) с помощью которого можно кодировать/декодировать сообщения на русском то AES...

10
8 / 8 / 0
Регистрация: 09.02.2012
Сообщений: 48
19.02.2020, 10:32  [ТС]
Декодируется всегда 3 символа, исключая последнюю комбинацию x00. Мне нужен только последний. Более простого способа нет???

Python
1
2
3
4
5
6
7
a = ['\xcf','\xf0','\xe8','\xe2','\xe5','\xf2']
for i in range(len(a)):
 
    print (a[i].encode("utf-16"))
    t = a[i].encode("utf-16").decode("cp1251")
    print (t)
    print (t[2])
Вывод консоли:

:~/Python/5$ ./test.py
b'\xff\xfe\xcf\x00'
яюП
П
b'\xff\xfe\xf0\x00'
яюр
р
b'\xff\xfe\xe8\x00'
яюи
и
b'\xff\xfe\xe2\x00'
яюв
в
b'\xff\xfe\xe5\x00'
яюе
е
b'\xff\xfe\xf2\x00'
яют
т
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
19.02.2020, 11:06
Python
1
2
>>> b'\xcf\xf0\xe8\xe2\xe5\xf2'.decode('cp1251')
'Привет'
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 6
19.02.2020, 11:13
Питон-то какой версии, 2 или 3?
Как вариант
Python
1
bytes(ord(i) for i in a).decode('cp1251')
Это потому что пришли уже символы. Если бы пришли байты - было бы в одну операцию. Т. е. советую посмотреть на более ранних этапах, где происходит нежелательная конвертация.
0
8 / 8 / 0
Регистрация: 09.02.2012
Сообщений: 48
19.02.2020, 11:57  [ТС]
З
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Python
1
2
>>> b'\xcf\xf0\xe8\xe2\xe5\xf2'.decode('cp1251')
'Привет'
У меня так:
:~$ python --version
Python 2.7.12
:~$ python3 --version
Python 3.5.2

:~$ python
Python 2.7.12 (default, Oct 8 2019, 14:14:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> b'\xcf\xf0\xe8\xe2\xe5\xf2'.decode('cp12 51')
u'\u041f\u0440\u0438\u0432\u0435\u0442'

PS/ На входе я получаю посимвольно c,f,f,0 и т.д. (парсинг rtf файла "...\fs24\'cf\'f0\'e8\'e2\'e5\'f2... .")

Добавлено через 23 минуты
Вопрос закрыт.
Решение подсказали на https://qna.habr.com/q/717371?... ion_834361
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 6
19.02.2020, 14:10
Скорее, 2. Для второго питона вообще можно так:
Python
1
2
s=''.join(a)
print(s.decode('cp1251'))
Но, сдаётся мне, не надо вам парсить rtf.
0
8 / 8 / 0
Регистрация: 09.02.2012
Сообщений: 48
19.02.2020, 14:28  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Скорее, 2. Для второго питона вообще можно так:
Но, сдаётся мне, не надо вам парсить rtf.
Почему? Что-то я не нашел простого способа вывести в QTextEdit простейшую RTF строку, созданную на виндах. Если есть решение - подскажите. Я нашел выход только в преобразовании rtf в html. Чем неспешно и занимаюсь
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 6
19.02.2020, 14:46
Stas43, https://doc.qt.io/qt-5/richtext.html
В частности,
QTextEdit / Widget that is used to edit and display both plain and rich text
Я сильно сомневаюсь, что они там что-то вручную парсят.
0
8 / 8 / 0
Регистрация: 09.02.2012
Сообщений: 48
19.02.2020, 15:26  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Stas43, https://doc.qt.io/qt-5/richtext.html
В частности,

Я сильно сомневаюсь, что они там что-то вручную парсят.
Хм. Придется еще раз доки почитать и проверить. У меня в лоб не вышло. Кстати, чтоб не плодить еще тему: в чем разница между двумя переменными:

Python
1
2
3
a = '\xcf'
t = b.encode("latin-1").decode("cp1251")
print (t)
Выводит П

Python
1
2
3
a = '\\' + 'x' + 'cf'
t = a.encode("latin-1").decode("cp1251")
print (t)
Выводит \xcf
Как правильно "собрать" переменную a из символов?

Спасибо заранее!

Добавлено через 29 минут
Цитата Сообщение от dondublon Посмотреть сообщение
Stas43, https://doc.qt.io/qt-5/richtext.html
В частности,

Я сильно сомневаюсь, что они там что-то вручную парсят.
Информация, конечно, старая https://qtcentre.org/threads/3... -QTextEdit
но в поиске в ближайших 3-4 страницах ничего существенного по QTextDocument & rtf вывод или чтение нет.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 6
19.02.2020, 15:37
Stas43, плодить темы - это нормально, одна тема - один вопрос.
Разница, вроде, очевидна. '\x' - это escape-последовательность сама по себе. Её даже сайт выделяет. Во втором примере её нет. Как собрать? Смотря что приходит, но, как уже было сказано ранее, не тем вы занимаетесь.

Добавлено через 1 минуту
Сюда ещё гляньте. https://doc.qt.io/qt-5/richtext-structure.html Они там создают внутренности RTF со своими объектами, насколько я понял.
0
8 / 8 / 0
Регистрация: 09.02.2012
Сообщений: 48
26.02.2020, 10:47  [ТС]
А вот и решение моей проблемы:

Python
1
2
3
4
5
6
7
#!/usr/bin/python3
#coding: utf-8
import binascii
 
a = ['cf','f0','e8','e2','e5','f2']
for i in range(len(a)):
    print (binascii.unhexlify(a[i]).decode("cp1251"))
:~/Python/5$ ./test1.py
П
р
и
в
е
т
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.02.2020, 10:47
Помогаю со студенческими работами здесь

Декодирование hex и ascii
Добрый день! Получаю с весов по com порту RS232 данные...

Декодирование зашифрованной информации
Текст сначала перевели в ASCII код (основной текст и ключ), а затем сделали побитовую операцию XOR. После этого перевели обратно в символы....

Декодирование данных после нормализации
Я делаю нормализацию данных: from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() train_data =...

Кодирование/декодирование данных шифром Цезаря
Здравствуйте! Помогите, пожалуйста, с решением одной любой из следующих задач! Программирование у меня не профилирующий предмет, и я в нём...

Декодирование методом контроля четности (Pascal -> Python)
Помогите перевести код с pascal на python. begin var k := ReadLnInteger('Введите k:'); k -= 1; var s := ReadLnString('Введите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru