Python 3でファイル読み込み時のUnicodeDecodeErrorを回避する

公開日:2018-11-09
最終更新:2018-11-09
※この記事は外部サイト(https://www.kumilog.net/entry/unicode-deco...)からのクロス投稿です

Pythonでファイルを読み込むときは以下のような処理でいけますが...

with open('file/to/path', 'r') as f:
    for line in f:
        line = line.strip()
        # つづきの処理

読み込んでいる途中で、utf-8ではない文字が含まれていると、UnicodeDecodeErrorが発生することがあります。for line in fの行で発生します。

大きなファイル、特にどこかからダウンロードしたファイルの場合、どの文字がutf-8ではないのか、特定することが難しいです。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in position 1024: invalid start byte

codecsモジュールを使うと、ファイルがutf-8であることを明示して、utf-8以外の文字が含まれていると、その行を無視して次の行を読み込みます。

import codecs

with codecs.open('file/to/path', 'r', 'utf-8', 'ignore') as f:
    for line in f:
        line = line.strip()
        # つづきの処理

pandasでの読み込みも同様に対処できます。

import codecs
import pandas as pd

with codecs.open('file/to/path', 'r', 'utf-8', 'ignore') as f:
    df = pd.read_csv(f)
記事が少しでもいいなと思ったらクラップを送ってみよう!
18
+1
@xkumiyuの技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする