2016-07-01 3 views
0

Я пытаюсь построить и напечатать строку Unicode с Python 3.x. Так, к примеру, следующие прекрасно работает:создание строки Unicode

a = '\u0394' 
print(a) 
Δ 

Но если я пытаюсь построить это, добавив две строки, у меня есть несколько проблем:

a = '\u' 
    File "<stdin>", line 1 
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \uXXXX escape 

a = '\\u' 
b = '0394' 
c = a + b 
print(c) 
\u4308 

Что я здесь отсутствует?

ответ

2

\uhhhh - это escape-последовательность, нотация используется в строковых литералах. Вы не можете создать эту нотацию из частей, по крайней мере, не так.

Как правило, вы бы использовать chr() function для получения отдельных символов из целых чисел вместо:

>>> chr(int('0394', 16)) 
'Δ' 

, например, где я первый интерпретировал шестнадцатеричной строки 0394 как целое число в базе 16.

Если вы должны генерировать строку Python буквальным побег нотацию, используйте codecs.decode() с unicode_escape кодека:

>>> import codecs 
>>> r'\u' + '0394' 
'\\u0394' 
>>> codecs.decode(r'\u' + '0394', 'unicode_escape') 
'Δ'