我尝试使用python将ascii字符串转换为转义的伪unicode转义字符串,但到目前为止失败了。
我想做什么:将ASCII“a”转换为ASCII字符串“<U0061>
”
我可以使用unicode('a')转换“a”,但不能保护ascii字符串中a的数值。
我该怎么做?
答案 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”调用,如给定示例中所示)