Python 如何在不使用u'的情况下打印unicode\uxxx';

Python 如何在不使用u'的情况下打印unicode\uxxx';,python,python-unicode,Python,Python Unicode,我正试图制作一个程序来迭代日语字符(Python2.7)并以可打印的格式返回/生成它们,但我无法将十六进制数字(3040-309f)转换为可以打印字符的格式。我发现使用u'\u'是可行的,但当我尝试使用unicode('\u3040')将数字转换为该格式时,它与u'\u3040'不同。代码可以更好地解释它 >>> s1 = u'\u309d' >>> s2 = unicode("\u209d") >>> print type(s1) == t

我正试图制作一个程序来迭代日语字符(Python2.7)并以可打印的格式返回/生成它们,但我无法将十六进制数字(3040-309f)转换为可以打印字符的格式。我发现使用u'\u'是可行的,但当我尝试使用unicode('\u3040')将数字转换为该格式时,它与u'\u3040'不同。代码可以更好地解释它

>>> s1 = u'\u309d'
>>> s2 = unicode("\u209d")
>>> print type(s1) == type(s2)
True
>>> print s1 == s2
False
>>> print s1, s2
ゝ \u209d
我尝试使用UTF-8和拉丁语-1作为第二个参数,但它没有任何作用。此外,我发现您可以执行
u'\u{0}.格式(u'3040')
,但我无法在迭代器中执行
u'3040'
,以及
u'\u{0}.格式(unicode('3040')
会引发错误。

在字节字符串文本中,
\uhhh
转义序列不会被解释,因此您会得到一个6个字符的文本

将其转换为Unicode仅将字符串解码为ASCII数据,而不是Python转义序列

您可以使用
unicode\u escape
编码进行解码:

>>> "\u209d".decode('unicode_escape')
u'\u209d'
>>> print "\u209d".decode('unicode_escape')
₝
但是,这有几个缺点。任何其他
\
转义序列也会被解码:

>>> '\\n'
'\\n'
>>> '\\n'.decode('unicode_escape')
u'\n'
因此,您可能必须先将反斜杠替换为双反斜杠,然后在保留文字反斜杠的情况下返回顶部:

>>> '\\n'.replace('\\', '\\\\').decode('unicode_escape')
u'\\n'
但要非常小心,事实上您并不是试图将JSON数据视为Python字符串文本。JSON也使用相同的转义序列格式,但应改为将其视为JSON;改为使用
JSON.loads()
解码:

>>> import json
>>> json.loads('"\u209d"')
u'\u209d'
在字节字符串文本中,
\uhhh
转义序列不被解释,因此得到的是6个字符的文本

将其转换为Unicode仅将字符串解码为ASCII数据,而不是Python转义序列

您可以使用
unicode\u escape
编码进行解码:

>>> "\u209d".decode('unicode_escape')
u'\u209d'
>>> print "\u209d".decode('unicode_escape')
₝
但是,这有几个缺点。任何其他
\
转义序列也会被解码:

>>> '\\n'
'\\n'
>>> '\\n'.decode('unicode_escape')
u'\n'
因此,您可能必须先将反斜杠替换为双反斜杠,然后在保留文字反斜杠的情况下返回顶部:

>>> '\\n'.replace('\\', '\\\\').decode('unicode_escape')
u'\\n'
但要非常小心,事实上您并不是试图将JSON数据视为Python字符串文本。JSON也使用相同的转义序列格式,但应改为将其视为JSON;改为使用
JSON.loads()
解码:

>>> import json
>>> json.loads('"\u209d"')
u'\u209d'
在字节字符串文本中,
\uhhh
转义序列不被解释,因此得到的是6个字符的文本

将其转换为Unicode仅将字符串解码为ASCII数据,而不是Python转义序列

您可以使用
unicode\u escape
编码进行解码:

>>> "\u209d".decode('unicode_escape')
u'\u209d'
>>> print "\u209d".decode('unicode_escape')
₝
但是,这有几个缺点。任何其他
\
转义序列也会被解码:

>>> '\\n'
'\\n'
>>> '\\n'.decode('unicode_escape')
u'\n'
因此,您可能必须先将反斜杠替换为双反斜杠,然后在保留文字反斜杠的情况下返回顶部:

>>> '\\n'.replace('\\', '\\\\').decode('unicode_escape')
u'\\n'
但要非常小心,事实上您并不是试图将JSON数据视为Python字符串文本。JSON也使用相同的转义序列格式,但应改为将其视为JSON;改为使用
JSON.loads()
解码:

>>> import json
>>> json.loads('"\u209d"')
u'\u209d'
在字节字符串文本中,
\uhhh
转义序列不被解释,因此得到的是6个字符的文本

将其转换为Unicode仅将字符串解码为ASCII数据,而不是Python转义序列

您可以使用
unicode\u escape
编码进行解码:

>>> "\u209d".decode('unicode_escape')
u'\u209d'
>>> print "\u209d".decode('unicode_escape')
₝
但是,这有几个缺点。任何其他
\
转义序列也会被解码:

>>> '\\n'
'\\n'
>>> '\\n'.decode('unicode_escape')
u'\n'
因此,您可能必须先将反斜杠替换为双反斜杠,然后在保留文字反斜杠的情况下返回顶部:

>>> '\\n'.replace('\\', '\\\\').decode('unicode_escape')
u'\\n'
但要非常小心,事实上您并不是试图将JSON数据视为Python字符串文本。JSON也使用相同的转义序列格式,但应改为将其视为JSON;改为使用
JSON.loads()
解码:

>>> import json
>>> json.loads('"\u209d"')
u'\u209d'

那么你从哪里获取数据?可能是JSON?那么你从哪里获取数据?可能是JSON?那么你从哪里获取数据?可能是JSON?那么你从哪里获取数据?可能是JSON?非常感谢!我没有使用JSON,这个答案真的很有帮助。我是通过迭代uni来获取数据的按顺序编码字符。(从3040到309f的所有字符)@573:您可以使用
unichr()
从表示码点的整数生成字符。非常感谢!我没有使用JSON,这个答案真的很有帮助。我是通过按顺序迭代unicode字符来获取数据的。(从3040到309f的所有字符)@573:您可以使用
unichr()
从表示码点的整数生成一个字符。非常感谢!我没有使用JSON,这个答案真的很有帮助。我是通过按顺序迭代unicode字符来获取数据的。(从3040到309f的所有字符)@Novert573:您可以使用
unichr()
从表示码点的整数生成一个字符。非常感谢!我没有使用JSON,这个答案真的很有帮助。我是通过按顺序迭代unicode字符来获取数据的。(从3040到309f的所有字符)@Novert573:您可以使用
unichr()
从表示码点的整数生成字符。