1. ホーム
  2. python

[解決済み] UnicodeError: UTF-16 ストリームが BOM で始まっていません。

2022-02-08 21:21:34

質問

pythonでcsvファイルを読み込むのに苦労しています。 私のcsvファイルには韓国語と数字があります。

以下は私のパイソンコードです。

import csv
import codecs
csvreader = csv.reader(codecs.open('1.csv', 'rU', 'utf-16'))
for row in csvreader:
    print(row)

まず、上記のコードで "for row in csvreader" 行を入力すると、UnicodeDecodeErrorが発生しました。

そこで、以下のコードを使用したところ、問題は解決したようです。

csvreader = csv.reader(codecs.open('1.csv', 'rU', 'utf-16'))

その後、NULLバイトエラーに遭遇しました。それから、csvファイルの何が問題なのかがわかりません。

[update] 前のコードから何も変えていないと思うのですが、プログラムに "UnicodeError と表示されます。UTF-16 ストリームは BOM で始まらない"

エクセルでcsvを開くと、適切な形式の表が表示されます(下部の画像)。 しかし、sublime Textで開くと、以下のようなスニペットが表示されます。

504b 0304 1400 0600 0800 0000 2100 6322
f979 7701 0000 d405 0000 1300 0802 5b43
6f6e 7465 6e74 5f54 7970 6573 5d2e 786d
6c20 a204 0228 a000 0200 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000

私のファイルについてもっと情報が必要な場合は、私に知らせてください

ご協力をお願いします。 よろしくお願いします :)

csvファイルをExcelで表示

csvファイルをsublime textで表示する。

解決方法は?

質問の中にファイルの詳細が含まれていますが、これは全くCSVファイルではありませんね。私の推測では、旧式のバイナリXLSファイルだと思いますが、あくまでも推測です。spam.xlsをspam.csvにリネームしているだけではダメで、CSV形式でエクスポートする必要があります。(もしそれが必要なら、プログラミングではなくExcelのヘルプを提供する他のサイトで尋ねてください)。

もし何らかの理由でそれができないのであれば、XLSファイルをパースするライブラリがPyPIにありますが、もしCSVを望んでいて、CSVをエクスポートできるのであれば、そちらの方が良いでしょう。