Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 2, 2007 12:00:19

felix
От:
Зарегистрирован: 2007-07-10
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Unicode

Подскажите как преобразовать такой текст в читабельный:
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

З.Ы. Пользовался поиском по сайту ничего не нашел.



Офлайн

#2 Авг. 2, 2007 12:37:55

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Офлайн

#3 Авг. 3, 2007 20:38:51

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

Офлайн

#4 Март 30, 2013 19:57:33

Stesh
Зарегистрирован: 2013-03-30
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Unicode

Типичная проблема с кодировками.
Попробуйте так

s = str(s)
либо
s = s.encode(кодировка)
, где кодировка ‘cp1251’, ‘utf-8’ , в общем та, что у вас

Офлайн

#5 Март 31, 2013 07:11:13

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Unicode

А по-моему надо просто print использовать

>>> foo = u'фыва'
>>> foo
u'\u0444\u044b\u0432\u0430'
>>> print foo
фыва
>>> print {'foo': foo}
{'foo': u'\u0444\u044b\u0432\u0430'}
Т.е. у человека нормальный unicode, но он пытается вывести, может быть, его как часть сложной структуры и тогда применется правило форматирования вывода объектов, наример, уникод отображается как u'\uXXXX'

Офлайн

#6 Апрель 30, 2013 07:42:05

lEXA
От: Екатеринбург
Зарегистрирован: 2013-04-30
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Unicode

Добрый день,
Анналогичная проблема (не стал заводить отдельный топик)
Парсю вебсайт через 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
То все удачно получается.

Заранее спасибо

Офлайн

#7 Апрель 30, 2013 13:22:56

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

Unicode

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

Отредактировано ilnur (Апрель 30, 2013 13:23:11)

Офлайн

#8 Апрель 30, 2013 13:38:38

lEXA
От: Екатеринбург
Зарегистрирован: 2013-04-30
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Unicode

Спасибо за ответ но не помогает
Делаю:

    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

Офлайн

#9 Апрель 30, 2013 15:23:38

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

Unicode

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 то второй ветки?

Отредактировано ilnur (Апрель 30, 2013 15:24:51)

Офлайн

#10 Апрель 30, 2013 16:21:04

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Unicode

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]
мир

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version