Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 27, 2013 09:45:52

error_256
Зарегистрирован: 2013-02-26
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

перекодировать юникод

никак не могу перекодировать из юникода в читаемый текст, подскажите как быть, внизу примерное условие:
text = “\u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 test text”
print text

какие манипуляции произвести чтобы текст был нормальным?

Офлайн

#2 Дек. 27, 2013 09:59:45

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

перекодировать юникод

добавь первой строкой

from __future__ import uniciode_literals

Офлайн

#3 Дек. 27, 2013 10:28:55

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

перекодировать юникод



Офлайн

#4 Дек. 27, 2013 11:25:59

error_256
Зарегистрирован: 2013-02-26
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

перекодировать юникод

боюсь проблема глубже… напишу весь ход работы:

            i['old_value'] = "{'path': u'files/116cdd9c-b55a-496a-9b91-b2141a36a99c/edj5twdmUp.dwg', 'ext': u'dwg', 'name': u'\u041f\u043b\u0430\u043d \u041a\u0440\u043e\u0432\u043b\u0438 11.10.13', 'icon': u'file'}"
            del_file_match = re.search("{'path': u'(.+?)', 'ext': u'(.+?)', 'name': u'(.+?)', 'icon': u'(.+?)'}", i['old_value'])
            if del_file_match:
                i['new_value'] = del_file_match.group(3) +"."+del_file_match.group(2)
                print i['new_value'] 
>>\u041f\u043b\u0430\u043d \u041a\u0440\u043e\u0432\u043b\u0438 11.10.13.dwg
как преобразовать в читаемый вид так и не понял

Отредактировано error_256 (Дек. 27, 2013 11:26:32)

Офлайн

#5 Дек. 27, 2013 12:30:39

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

перекодировать юникод

сделай так

your_dict = eval(your_string, {"__builtins__":None},{})

и работатй со словарем

EDIT: TIL
лучше так
начиная с python2.6
import ast
ast.literal_eval(your_string)

Отредактировано bismigalis (Дек. 27, 2013 12:54:40)

Офлайн

#6 Дек. 27, 2013 12:48:01

error_256
Зарегистрирован: 2013-02-26
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

перекодировать юникод

your_dict = eval(i['new_value'], {"__builtins__":None},{})
print your_dict
    your_dict = eval(i['new_value'], {"__builtins__":None},{})
  File "<string>", line 1
    \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 test text.xls
                                                                                                ^
SyntaxError: unexpected character after line continuation character

Офлайн

#7 Дек. 27, 2013 13:19:20

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

перекодировать юникод

1) версия питона?
2) что вообще за задача?
3) у всех нормально выводит, значит проблема ещё глубже )



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#8 Дек. 27, 2013 15:48:57

error_256
Зарегистрирован: 2013-02-26
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

перекодировать юникод

Python 2.7.3

задача видима из кода, я беру строку, режу её по регулярке и принтую, я прям код для примера внизу напишу

>>> import re
>>> i = "{'path': u'files/116cdd9c-b55a-496a-9b91-b2141a36a99c/edj5twdmUp.dwg', 'ext': u'dwg', 'name': u'\u041f\u043b\u0430\u043d \u041a\u0440\u043e\u0432\u043b\u0438 11.10.13', 'icon': u'file'}"
>>> del_file_match = re.search("{'path': u'(.+?)', 'ext': u'(.+?)', 'name': u'(.+?)', 'icon': u'(.+?)'}", i)
>>> d = del_file_match.group(3) +"."+del_file_match.group(2)
>>> print d
\u041f\u043b\u0430\u043d \u041a\u0440\u043e\u0432\u043b\u0438 11.10.13.dwg
>>> import ast
>>> ast.literal_eval(d)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/ast.py", line 49, in literal_eval
    node_or_string = parse(node_or_string, mode='eval')
  File "/usr/lib/python2.7/ast.py", line 37, in parse
    return compile(source, filename, mode, PyCF_ONLY_AST)
  File "<unknown>", line 1
    \u041f\u043b\u0430\u043d \u041a\u0440\u043e\u0432\u043b\u0438 11.10.13.dwg
                                                                             ^
SyntaxError: unexpected character after line continuation character
>>>

Офлайн

#9 Дек. 27, 2013 16:13:06

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

перекодировать юникод

А почему словарь запихивается в строку (i = “{бла бла}”)? Вот оно там и херится



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#10 Дек. 27, 2013 16:16:29

ZeUsM
Зарегистрирован: 2013-04-16
Сообщения: 23
Репутация: +  2  -
Профиль   Отправить e-mail  

перекодировать юникод

Как вариант

print eval('u"'+d+ '"')
но, знатоки говорят, что это не верный путь.



Нет сегодняшних ошибок, есть вчерашние недоработки.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version