Python:打印转义的 Unicode 字符
我尝试用Python把一个ASCII字符串转换成一个转义的伪Unicode字符串,但到现在为止都没有成功。
我想做的事情是:把ASCII字符'a'转换成ASCII字符串"<U0061>
"。
我可以用unicode('a')来转换"a",但我无法把'a'的数值安全地保存为一个ASCII字符串。
我该怎么做呢?
2 个回答
1
这里有一个简单的例子,可以让你用Python自带的编码/解码工具来使用Ignacio的解决方案。如果你需要更稳定的东西(比如有合适的错误处理等),可以查看http://docs.python.org/library/codecs.html。
import codecs
def encode(text, error="strict"):
return ("".join("<U%04x>" % ord(char) for char in text), len(text))
def search(name):
if name == "unicode_ltgt":
info = codecs.CodecInfo(encode, None, None, None)
info.name = "unicode_ltgt"
info.encode = encode
return info
return None
codecs.register(search)
if __name__ == "__main__":
a = u"maçã"
print a.encode("unicode_ltgt")
(只需将这个作为模块导入,就会安装编码器“unicode_ltgt”,并且可以在任何“.encode”调用中使用,就像给出的例子一样)
7
你可以使用 ord()
这个函数把一个字符转换成它的字符值(也就是字符串类型)或者代码点(unicode)。然后,你可以用合适的字符串格式化方法把它转换成文本表示。
'U+%04X' % (ord(u'A'),)