Python:打印unicode char转义

时间:2010-11-02 09:04:30

标签: python unicode

我尝试使用python将ascii字符串转换为转义的伪unicode转义字符串,但到目前为止失败了。

我想做什么:将ASCII“a”转换为ASCII字符串“<U0061>

我可以使用unicode('a')转换“a”,但不能保护ascii字符串中a的数值。

我该怎么做?

2 个答案:

答案 0 :(得分:5)

您可以使用ord()将字符转换为字符值(str)或代码点(unicode)。然后,您可以使用适当的字符串格式将其转换为文本表示。

'U+%04X' % (ord(u'A'),)

答案 1 :(得分:1)

这是一个极简主义的示例,允许您使用Ignacio的解决方案和Python的内置编码/解码引擎。如果您需要更一致的内容(正确的错误处理等等),请检查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”调用,如给定示例中所示)