如果我有这样的unicode:
'\x00B\x007\x003\x007\x00-\x002\x00,\x001\x00P\x00W\x000\x000\x009\x00,\x00N\x00O\x00N\x00E\x00,\x00C\x00,\x005\x00,\x00J\x00,\x00J\x00,\x002\x009\x00,\x00G\x00A\x00R\x00Y\x00,\x00 \x00W\x00I\x00L\x00L\x00I\x00A\x00M\x00S\x00,\x00 \x00P\x00A\x00R\x00E\x00N\x00T\x00I\x00,\x00 \x00F\x00I\x00N\x00N\x00E\x00Y\x00 \x00&\x00 \x00L\x00E\x00W\x00I\x00S\x00,\x00U\x00S\x00,\x001\x00\r\x00'
它是从csv以字符串格式读入的,但我想把它转换成人类可读的格式。当我打印它时,它就可以工作了,但是我似乎无法找到使它以人类可读的形式保存到变量的approach命令。最好的方法是什么?在
你没有Unicode。还没有。您有一系列字节,这些字节使用UTF-16编码。您需要先解码这些字节:
打印它只是因为您的控制台忽略了每个UTF-16代码单元的大端对。在
您的数据缺少一个Byte order mark,因此我使用了
utf-16-be
,或者是UTF-16的big-endian变体,假设您在正确的字节处剪切数据。如果你没有的话,它也可能是小的实际上,我必须删除最后一个
^{pr2}$\x00
空字节以使其解码;当您将一个UTF-16代码单元(每个2字节)切成两半时,您粘贴了一个奇数而不是偶数个字节:从读取的文件可能包含BOM作为前两个字节。如果是这样的话,只要告诉你用什么来读取这个数据就可以使用
utf-16
作为编解码器,它就会从第一个字节中找出正确的变体。在如果您使用的是Python 2,那么您需要研究
csv
模块的Examples section,以获得能够以适合该模块的形式重新编码数据的代码;如果您包含该部分中的UnicodeReader
,那么应该这样使用它:演示:
如果您使用的是python3,只需将
encoding
参数设置为open()
函数为utf-16
,并按原样使用csv
模块。在相关问题 更多 >
编程相关推荐