构建 Unicode 字符串
constructing a Unicode string
我正在尝试使用 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
我在这里错过了什么?
\uhhhh
是一个转义序列,一种在字符串文字中使用的 notation。你不能从部分构造那个符号,至少不能直接那样。
通常,您会使用 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')
'Δ'
我正在尝试使用 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
我在这里错过了什么?
\uhhhh
是一个转义序列,一种在字符串文字中使用的 notation。你不能从部分构造那个符号,至少不能直接那样。
通常,您会使用 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')
'Δ'