Действительно ли в ваших данных есть пробелы между \
и u
?Это вызовет проблемы с разбором, поэтому вам нужно сначала удалить их.Вы не можете использовать replace(" ","")
, потому что строка будет уже отформатирована как \\
, если они не предшествуют u
.
После того, как вы получите правильную строку, вы можете либо (1) использоватьPython 3 или (2) импортировать поддержку Unicode в 2.7 или (3) использовать u""
строки в 2.7 ...
В Python 3:
mytext='\u0444 \u0430 \u0439 \u043b \u0435'
print(mytext)
Python 2.7:
from __future__ import unicode_literals
mytext='\u0444 \u0430 \u0439 \u043b \u0435'
print mytext
Python 2.7 без импорта:
mytext=u'\u0444 \u0430 \u0439 \u043b \u0435'
# note the `u` before the string.
# In your example, you'd remove all those extra spaces
print mytext
Вывод:
ф а й л е
ОБНОВЛЕНИЕ: Если ваш вывод в точности соответствует написанному выше,затем вы сможете сначала изменить строку, чтобы избавиться от посторонних пробелов, а затем оценить ее для создания правильного формата.(Спасибо @lenz за комментарий о literal_eval
.)
import ast
original = "msg = u '\ u0444 \ u0430 \ u0439 \ u043b \ u0435'"
despaced = original.replace("u '","u'").replace("\\ ","\\")
# chop off original assignment with split() and assign to new variable
cleaned = ast.literal_eval(despaced.split("=")[1].strip())
print cleaned
Вывод:
ф а й л е