Форум сайта python.su
0
Здравствуйте. Подскажите решение такой проблемы. Есть 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
Офлайн
253
??
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)
Офлайн
0
>>> 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)
приветОфлайн
0
Да это оно, оказалось так просто)). Огромное спасибо. Еще один вопрос есть строка u'\х041f\х0438\х0442\х043e\х043d'. Питон выводит только такую строку u'\u041f\u0438\u0442\u043e\u043d'. Есть методы вывода первой строки? Или ее нужно как то преобразовывать?
Офлайн
253
выводить можно в разные места
f.write(s)
print(s)
Офлайн
0
Перепробовал кучу методов все не то(. Нужно как то строку в UTF-8 допустим эту ‘\x0414\x041A’ преобразовать в такой вид u'\u0414\u041A' .encode('cp1251'). Или в во что нибудь чтоб нормально отображало. Подскажите как это сделать?
Офлайн
14
>>> s = ‘\x0414\x041A’
>>> s.decode('unicode-escape')
u'\x0414\x041A'
Офлайн
0
Это немного не то. Или у вас нормально выводит буквы ДК? Вся загвоздка перекодировать так чтобы внутри строки, все «х» стали «u». Понимаю тупая идея но единственное что в голову приходит))))
Офлайн
6
используй регулярные выражения и ‘\x0414\x041A’ преобразовывай по поиску в ‘\u0414\u041A’
import re только для начала тебе надо избавиться от косой черты
Отредактировано (Июнь 6, 2011 23:16:09)
Офлайн
6
блин не могу избавиться от косой черты , навождение просто, использовал re.sub
Отредактировано (Июнь 7, 2011 00:48:30)
Офлайн