我正在尝试使用Python
读取文件open('/Desktop/test.csv','rb').read()[1:15]
我得到的回复如下:
'\xfeY\x00!\x00B\x00L\x00-\x00 \x00B'
即使我在文本编辑器中打开test.csv,它也是一种可读的字符串格式。有谁知道这是什么格式以及如何将其转换回字符串字符?谢谢!
答案 0 :(得分:2)
该文件使用UTF-16进行编码。
>>> open('/Desktop/test.csv', 'r', encoding='UTF-16').read(7)
'Y!BL- B'
或者,如果您仍在使用较旧的Python版本,
>>> import codecs
>>> codecs.open('/Desktop/test.csv', 'r', encoding='UTF-16').read(7)
u'Y!BL- B'
另请注意,Python使用从零开始的索引,就像大多数其他语言一样(C,Java,C#,JavaScript等...)
>>> 'abcdefghijklmnopqrstuvwxyz'[1:15]
'bcdefghijklmno' # Omits the 'a', which is at index 0
答案 1 :(得分:1)
没有什么奇怪的,一切都很好。 Python使用\x00
转义序列来表示不可打印的字符:
>>> '\x00'
'\x00'
>>> len('\x00')
1
>>> '\x65'
'e'
注意十六进制字符65是如何打印为e
的;毕竟它是一个可打印的ASCII字母。
您的数据可能编码为与ASCII不同的内容;尝试用UTF-16解码它。前1个字节看起来像是UTF-16 BOM的第二个字节:
>>> import codecs
>>> codecs.BOM_UTF16
'\xff\xfe'