Найти - Пользователи
Полная версия: Unicode
Начало » Python для новичков » Unicode
1 2
felix
Подскажите как преобразовать такой текст в читабельный:
u'\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Projity, \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u043f\u0440\u043e\u0434\u0430\u0436\u0430\u043c\u0438

З.Ы. Пользовался поиском по сайту ничего не нашел.
Александр Кошелев
http://www.python.com.ua/forum/viewtopic.php?id=979
The gray Cardinal
http://forum.script-coding.info/viewtopic.php?id=542
Stesh
Типичная проблема с кодировками.
Попробуйте так
s = str(s)
либо
s = s.encode(кодировка)
, где кодировка ‘cp1251’, ‘utf-8’ , в общем та, что у вас
lorien
А по-моему надо просто print использовать
>>> foo = u'фыва'
>>> foo
u'\u0444\u044b\u0432\u0430'
>>> print foo
фыва
>>> print {'foo': foo}
{'foo': u'\u0444\u044b\u0432\u0430'}
Т.е. у человека нормальный unicode, но он пытается вывести, может быть, его как часть сложной структуры и тогда применется правило форматирования вывода объектов, наример, уникод отображается как u'\uXXXX'
lEXA
Добрый день,
Анналогичная проблема (не стал заводить отдельный топик)
Парсю вебсайт через lxml (2ой день пишу на pythonе :-) ) - Context-type у страницы не задан.
Через txt1 = doc.xpath('/html/body/блабла') получаю текст в unicode.
Вернее не совсем текст а (type(s), s) <type ‘list’>
Через самодельные костыли (кстати а как это сделать красиво или правильно?) перевожу в <type ‘unicode’> u'\u0441\u043f\u0435\u0446-\u043f\u0440\u043e\u0435\u043a\u0442

Далее вопрос как unicode перевести в банальный str c русским текстом
Игрался # coding: cp1251
Пробовал по разному:
print type(s2),s2.encode('cp866')
print type(s2),s2.encode('cp1251')
print type(s2),s2.encode('utf-8')
print s2.encode()
print s2.decode()
print s2.decode('cp866')
print s2.decode('cp1251')
print s2.decode('windows-1251').encode()
Не выходит каменный цветок.

Причем если банально назначить переменную
s=u'\u0451\u044f\u0445\u040e-\u044f\u0401\u044e\u0445\u044a\u0404'
s1=s.encode ('cp866')
print s1
То все удачно получается.

Заранее спасибо
ilnur
lEXA
Далее вопрос как unicode перевести в банальный str c русским текстом
u_str = u'Банальный юникод'
s_str = u_str.encode('utf-8') # не юникод строка, в кодировке utf-8

lEXA
Спасибо за ответ но не помогает
Делаю:
    print '----'
    s_str =  s2.encode('utf-8')
    print type(s_str), s_str
    print '----'

Результат:
<type 'str'> u'\u0441\u043f\u0435\u0446-\u043f\u0440\u043e\u0435\u043a\u0442
Да тип с unicode на str поменялся. Но строка не меняет формат. В файле задано
# coding: cp1251

ilnur
Python 2.7.3 (default, Sep 26 2012, 21:51:14) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a=u'привет'
>>> a
u'\u043f\u0440\u0438\u0432\u0435\u0442'
>>> print a
привет
>>> print type(a)
<type 'unicode'>
>>> b=a.encode('utf-8')
>>> b
'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
>>> print b
привет
>>> print type(b)
<type 'str'>
>>>
что вы хотетите сделать со строкой то?

print перевод строку в юникод перед печатью. python то второй ветки?
reclosedev
lEXA
Через txt1 = doc.xpath('/html/body/блабла') получаю текст в unicode.
Вернее не совсем текст а (type(s), s) <type ‘list’>
Вот именно, список, а не текст.

In [2]: lst = [u'привет', u'мир']
 
In [3]: print lst
[u'\u043f\u0440\u0438\u0432\u0435\u0442', u'\u043c\u0438\u0440']
 
In [4]: print lst[0]
привет
 
In [5]: print lst[1]
мир
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB