Pythonを使用してファイルを読み取ろうとしています
open('/Desktop/test.csv','rb').read()[1:15]
そして私は次のようなものを返します:
'\xfeY\x00!\x00B\x00L\x00-\x00 \x00B'
テキストエディタでtest.csvを開くと、読み取り可能な文字列形式になっています。これがどのような形式で、文字列文字に戻す方法を知っている人はいますか?ありがとう!
ファイルは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
それについて奇妙なことは何もありません、すべてが順調です。Pythonは、\x00
エスケープシーケンスを使用して、印刷できない文字を表します。
>>> '\x00'
'\x00'
>>> len('\x00')
1
>>> '\x65'
'e'
16進文字65がe
;として印刷された方法に注意してください。結局のところ、それは印刷可能なASCII文字です。
データはおそらくASCIIとは異なるものにエンコードされています。たとえば、UTF-16でデコードしてみてください。最初の1バイトは、私にはUTF-16BOMの2番目のバイトのように見えます。
>>> import codecs
>>> codecs.BOM_UTF16
'\xff\xfe'