Уведомления

Группа в Telegram: @pythonsu

#1 Май 26, 2011 21:57:10

sleep
От:
Зарегистрирован: 2011-05-26
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразование hex

Здравствуйте. Подскажите решение такой проблемы. Есть hex список нужно преобразовать hex обратно в слово . Делаю так:

        s = 'привет' 
hex_chars = map(hex,map(ord,s))
print hex_chars #['0xef', '0xf0', '0xe8', '0xe2', '0xe5', '0xf2'].
hex_string = "\\".join(c[1:4] for c in hex_chars)
print hex_string #xef\xf0\xe8\xe2\xe5\xf2
По всей видимости когда преобразовую меняется тип переменной, потому что если сделать так
        hex_strings = 'x73\x74\x72\x69\x6e\x67'
print hex_strings #x73tring
то почти выводит)))) слеша впереди не хватает.



Офлайн

#2 Май 26, 2011 22:22:16

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Преобразование hex

??

a=['0xef', '0xf0', '0xe8', '0xe2', '0xe5', '0xf2']
"".join(map(chr,map(eval,a)))
>>> 'привет'
"".join([chr(eval(i)) for i in a])
>>> 'привет'
Это надо?



Отредактировано (Май 26, 2011 22:26:00)

Офлайн

#3 Май 27, 2011 00:47:49

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразование hex

>>> s = u'привет'.encode('utf-8')
>>> h = [hex(ord(c)) for c in s]
>>> h
['0xd0', '0xbf', '0xd1', '0x80', '0xd0', '0xb8', '0xd0', '0xb2', '0xd0', '0xb5', '0xd1', '0x82']
>>> print "".join(chr(int(i, 16)) for i in h)
привет



Офлайн

#4 Май 28, 2011 23:24:36

sleep
От:
Зарегистрирован: 2011-05-26
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразование hex

Да это оно, оказалось так просто)). Огромное спасибо. Еще один вопрос есть строка u'\х041f\х0438\х0442\х043e\х043d'. Питон выводит только такую строку u'\u041f\u0438\u0442\u043e\u043d'. Есть методы вывода первой строки? Или ее нужно как то преобразовывать?



Офлайн

#5 Май 29, 2011 07:34:19

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Преобразование hex

выводить можно в разные места

f.write(s)
print(s)
Если print не справляется - приводите к кодировке в кторой работает ваша консоль.



Офлайн

#6 Июнь 1, 2011 21:12:27

sleep
От:
Зарегистрирован: 2011-05-26
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразование hex

Перепробовал кучу методов все не то(. Нужно как то строку в UTF-8 допустим эту ‘\x0414\x041A’ преобразовать в такой вид u'\u0414\u041A' .encode('cp1251'). Или в во что нибудь чтоб нормально отображало. Подскажите как это сделать?



Офлайн

#7 Июнь 1, 2011 22:25:53

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Преобразование hex

>>> s = ‘\x0414\x041A’
>>> s.decode('unicode-escape')
u'\x0414\x041A'



Офлайн

#8 Июнь 2, 2011 11:22:16

sleep
От:
Зарегистрирован: 2011-05-26
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразование hex

Это немного не то. Или у вас нормально выводит буквы ДК? Вся загвоздка перекодировать так чтобы внутри строки, все «х» стали «u». Понимаю тупая идея но единственное что в голову приходит))))



Офлайн

#9 Июнь 6, 2011 22:46:30

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Преобразование hex

используй регулярные выражения и ‘\x0414\x041A’ преобразовывай по поиску в ‘\u0414\u041A’
import re только для начала тебе надо избавиться от косой черты

Отредактировано (Июнь 6, 2011 23:16:09)

Офлайн

#10 Июнь 7, 2011 00:48:06

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Преобразование hex

блин не могу избавиться от косой черты , навождение просто, использовал re.sub

Отредактировано (Июнь 7, 2011 00:48:30)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version