2016-07-01 7 views
0

Ich versuche, eine Unicode-Zeichenfolge mit Python 3.x zu erstellen und zu drucken. So arbeitet beispielsweise die folgenden Fein:Erstellen einer Unicode-Zeichenfolge

a = '\u0394' 
print(a) 
Δ 

Aber wenn ich versuche, dies zu konstruieren, indem zwei Strings anhängt, ich habe mehrere Probleme:

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 

Was soll ich hier fehlt?

Antwort

2

\uhhhh ist eine Escape-Sequenz, eine Notation in String-Literalen verwendet. Sie können diese Notation nicht aus Teilen konstruieren, zumindest nicht direkt.

Im Allgemeinen würden Sie die chr() function verwenden, um einzelne Zeichen anstelle von einer ganzen Zahl zu produzieren:

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

zum Beispiel, wo ich zuerst die Hex-String 0394 als eine ganze Zahl in der Basis interpretiert 16.

wenn Sie müssen die wörtliche escape Notation Python-String generieren, verwenden codecs.decode() mit dem unicode_escape Codec:

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