😽
Replacement Markerをカスタマイズ
背景情報
Pythonによくあるopen関数でファイルを開く、
例えば、cp932で、あるCSVファイルを開くは以下のようにお書きします。
open(csv_file_path, encoding="cp932", errors='replace')
errors='replace'というのは、エラーが発生する場合、replace処理が実行されます。
例えば、utf8のファイル、をcp932で開く場合、cp932に存在しない文字があった場合、エラーになるので、置換処理が実行されます。
何に置換される?
デフォルトでは、"?"という文字に置換されます。
何をやりたい
今回は置換用の文字:"?"を変更したい:
具体的に、もっと気づきやすい”■”にしたい。
実現方法
その場合、カスタマイズのエラーハンドルを登録することで実現できます。
import codecs
replace_char = '■'
def my_error_handler(exc):
return ((exc.end - exc.start) * replace_char, exc.end)
codecs.register_error('my_error_handler', my_error_handler)
# ここでmy_error_handlerを利用する
open(csv_file_path, encoding="cp932", errors='my_error_handler')
以上です。
ご参考になれば幸いです。
Discussion