Форум сайта python.su
0
никак не могу перекодировать из юникода в читаемый текст, подскажите как быть, внизу примерное условие:
text = “\u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 test text”
print text
какие манипуляции произвести чтобы текст был нормальным?
Офлайн
47
добавь первой строкой
from __future__ import uniciode_literals
Офлайн
568

Офлайн
0
боюсь проблема глубже… напишу весь ход работы:
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)
Офлайн
47
сделай так
your_dict = eval(your_string, {"__builtins__":None},{})
import ast ast.literal_eval(your_string)
Отредактировано bismigalis (Дек. 27, 2013 12:54:40)
Офлайн
0
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
1) версия питона?
2) что вообще за задача?
3) у всех нормально выводит, значит проблема ещё глубже )
Офлайн
0
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 >>>
Офлайн
7
А почему словарь запихивается в строку (i = “{бла бла}”)? Вот оно там и херится
Офлайн
2
Как вариант
print eval('u"'+d+ '"')
Офлайн