Pythonで文字コードが違っていて読み取れない文字を無視する方法です。
Python 3.7.2
問題点
まずpathlibを使ってファイルを読んでみます。
#coding:utf-8 import pathlib file_path = r"C:\Users\UserName\Desktop\example.txt"; file = pathlib.Path(file_path) with file.open(encoding = "utf-8") as f: lines = f.readlines() for line in lines: print(line)
ここで、example.txtがShift-JISで保存されていたとします。
英数字だけなら問題なく読めますが、マルチバイト文字が入っていると、
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 in position 31: invalid start byte
みたいなエラーが出てしまいます。
読めなかった文字だけ無視する
codecsを使うと、文字コードエラーで読めなかった文字だけスキップすることができます。
#coding:utf-8 import codecs file_path = r"C:\Users\UserName\Desktop\example.txt"; with codecs.open(file_path, 'r', 'utf-8', 'ignore') as file: lines = file.readlines() for line in lines: print(line)
Shift-JISで「01234abcdeあいうえお56789fghijかきくけこ」と書かれたファイルを読むと、 「01234abcde56789fghij」と表示されます。