301

ここに私のコードがあります、

for line in open('u.item'):
# Read each line

このコードを実行するたびに、次のエラーが発生します。

UnicodeDecodeError: 'utf-8' コーデックは位置 2892 のバイト 0xe9 をデコードできません: 継続バイトが無効です

これを解決して、open() に追加のパラメーターを追加しようとしました。コードは次のようになります。

for line in open('u.item', encoding='utf-8'):
# Read each line

しかし、再び同じエラーが発生します。じゃあどうすればいいの?

4

15 に答える 15

552

Mark Ransom が示唆したように、私はその問題に適したエンコーディングを見つけました。エンコーディングは だっ"ISO-8859-1"たので、 に置き換えるopen("u.item", encoding="utf-8")open('u.item', encoding = "ISO-8859-1")問題が解決します。

于 2013-10-31T12:35:45.300 に答える
37

ファイルには実際には UTF-8 でエンコードされたデータは含まれていません。他のエンコーディングが含まれています。そのエンコーディングが何であるかを把握し、それをopen呼び出しで使用します。

たとえば、Windows-1252 エンコーディングでは、は文字0xe9になりますé

于 2013-10-31T05:58:23.990 に答える
25

Pandasを使用して読み取るには、これを試してください。

pd.read_csv('u.item', sep='|', names=m_cols, encoding='latin-1')
于 2017-01-31T20:35:31.667 に答える
17

これは機能します:

open('filename', encoding='latin-1')

または:

open('filename', encoding="ISO-8859-1")
于 2020-02-17T19:45:41.430 に答える
2

これは、Python 3 で CSV ファイルを変換する例です。

try:
    inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
    pass
于 2016-09-14T19:24:43.000 に答える
2

このデータセットを読んでいるときに、 Kaggleからダウンロードしたデータセットを使用していたところ、次のエラーがスローされました。

UnicodeDecodeError: 'utf-8' コーデックは位置 183 のバイト 0xf1 をデコードできません: 継続バイトが無効です

これが私がそれを修正した方法です。

import pandas as pd

pd.read_csv('top50.csv', encoding='ISO-8859-1')

于 2021-10-13T12:46:05.293 に答える
2

Notepad++でファイルを開き、[エンコード] または [エンコード] メニューを選択して、ANSI から UTF-8 またはISO 8859-1コード ページを識別または変換します。

于 2021-01-22T09:46:39.120 に答える