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

какие манипуляции произвести чтобы текст был нормальным?
bismigalis
добавь первой строкой
from __future__ import uniciode_literals
FishHook
error_256
боюсь проблема глубже… напишу весь ход работы:
            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
как преобразовать в читаемый вид так и не понял
bismigalis
сделай так

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

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

EDIT: TIL
лучше так
начиная с python2.6
import ast
ast.literal_eval(your_string)
error_256
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
Master_Sergius
1) версия питона?
2) что вообще за задача?
3) у всех нормально выводит, значит проблема ещё глубже )
error_256
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
>>>
Master_Sergius
А почему словарь запихивается в строку (i = “{бла бла}”)? Вот оно там и херится
ZeUsM
Как вариант
print eval('u"'+d+ '"')
но, знатоки говорят, что это не верный путь.
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