0

Pythonを使用してファイルを読み取ろうとしています

open('/Desktop/test.csv','rb').read()[1:15]

そして私は次のようなものを返します:

'\xfeY\x00!\x00B\x00L\x00-\x00 \x00B'

テキストエディタでtest.csvを開くと、読み取り可能な文字列形式になっています。これがどのような形式で、文字列文字に戻す方法を知っている人はいますか?ありがとう!

4

2 に答える 2

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
于 2013-01-23T17:13:37.563 に答える
1

それについて奇妙なことは何もありません、すべてが順調です。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'
于 2013-01-23T17:11:18.967 に答える