如何将“\ uxxxx \ uxxxx”转换为u'\ Uxxxxxxxx'?

时间:2016-10-07 10:00:12

标签: python python-3.x unicode escaping unicode-escapes

我有一个文本文件,其中填充了1799 (original length string) 928 (51.58% compression) 1388 1712 918 (51.028% compression) 的unicode字符,但python似乎不喜欢它们。
但是如果我用"\ud83d\udca5"替换它,这似乎是他的python转义样式(Charbase),它就可以了。

是否有解决方案将它们全部转换为u'\U0001f4a5'转义格式,而不是python可以理解的?

感谢。

1 个答案:

答案 0 :(得分:0)

您正在混合使用Unicode和编码的字符串。 u'\U0001f4a5'是一个Unicode对象,Python用于处理字符串的内部数据类型。 (在Python 3中,u是可选的,因为现在所有字符串都是Unicode对象。)

另一方面,文件使用编码。 UTF-8是最常见的一种,但它只是将Unicode对象存储在面向字节的文件或流中的一种方法。打开这样的文件时,需要指定编码,以便Python可以将字节转换为有意义的Unicode对象。

在您的情况下,您似乎需要使用UTF-16编解码器而不是UTF-8打开文件。

with open("myfile.txt", encoding="utf-16") as f:
    s = f.read()
如果编解码器实际上是UTF-16

将为您提供正确的内容。如果看起来不正确,请尝试"utf-16-le""utf-16-be"