2016-02-24 2 views
0

Я студент, изучающий scython (сканер).Как преобразовать строку unicode в формате unicode с помощью python?

Я хочу преобразовать строку unicode в str в python. , но эта строка в Юникоде не является обычной строкой. Этот юникод - это формат в формате Юникод. см. ниже код.

# python 2.7 
... 
print(type(name[0])) 
print(name[0]) 
print(type(keyword_name_temp)) 
print(keyword_name_temp) 
... 

Я вижу консоль, как показано ниже, при запуске верхнего скрипта.

$ <type 'unicode'> 
$ 서용교 ## this words is korean characters 
$ <type 'unicode'> 
$ u'\\uc9c0\\ubc29\\uc790\\uce58\\ub2e8\\uccb4' 

Я хочу видеть «keyword_name_temp» как корейский. но я не знаю, как это сделать ...

Я получил список имен и keyword_name_temp из html-кода с запросом http.

Список наименований по существу был Формат строки.

Ключевое слово name_temp в основном было уникодным форматом.

Пожалуйста, помогите мне!

ответ

1

u'\\uc9c0\\ubc29\\uc790\\uce58\\ub2e8\\uccb4' содержит реальные слэш (обратный слэш является маскирующим в Python строковые литералы, Python интерпретатор принтами обратные косые черты в строках как \\) с последующих u и шестигранными последовательности, а не буквальные символы Юникода U + C9C0 и т.д. , которые обычно написаны с использованием \u escape sequence (случались, что строка из какого-нибудь объекта JSON, возможно?)

Вы можете построить строку JSON из него, и использовать json.loads() для преобразования в юникод строку:

Пример в Python 2.7:

>>> s1 = u'서용교' 
>>> type(s1) 
<type 'unicode'> 
>>> s1 
u'\uc11c\uc6a9\uad50' 
>>> print(s1) 
서용교 
>>> 
>>> 
>>> s2 = u'\\uc9c0\\ubc29\\uc790\\uce58\\ub2e8\\uccb4' 
>>> type(s2) 
<type 'unicode'> 
>>> 
>>> # put that unicode string between double-quotes 
>>> # so that json module can interpret it 
>>> ts2 = u'"%s"' % s2 
>>> ts2 
u'"\\uc9c0\\ubc29\\uc790\\uce58\\ub2e8\\uccb4"' 
>>> 
>>> import json 
>>> json.loads(ts2) 
u'\uc9c0\ubc29\uc790\uce58\ub2e8\uccb4' 
>>> print(json.loads(ts2)) 
지방자치단체 
>>> 

Другой вариант, чтобы сделать его строковым

>>> import ast 
>>> 
>>> # construct a string literal, with the 'u' prefix 
>>> s2_literal = u'u"%s"' % s2 
>>> s2_literal 
u'u"\\uc9c0\\ubc29\\uc790\\uce58\\ub2e8\\uccb4"' 
>>> print(ast.literal_eval(s2_literal)) 
지방자치단체 
>>> 
>>> # also works with single-quotes string literals 
>>> s2_literal2 = u"u'%s'" % s2 
>>> s2_literal2 
u"u'\\uc9c0\\ubc29\\uc790\\uce58\\ub2e8\\uccb4'" 
>>> 
>>> print(ast.literal_eval(s2_literal2)) 
지방자치단체 
>>> 
+0

Я решил проблему с вашими комментариями. очень очень спасибо !! –

1

Простейшим решением было бы перейти на Python 3, где строки по умолчанию Unicode.

+0

Согласен с этим ответом. Я бы научился использовать python 3. – Igor

0

Вы строка Юникода, и если вы знаете кодировку: UTF-8, например, вы можете попробовать

print name[0].decode("utf-8") 
Смежные вопросы