http://docs.python.org/howto/unicode.html#the-unicode-type
str = unicode(str, errors='replace')
または
str = unicode(str, errors='ignore')
注: これにより、問題の文字が取り除かれ (無視され)、それらのない文字列が返されます。
アプリケーションで許可されていない非 ASCII 入力に対する保護として使用しているので、これは理想的なケースです。
別の方法: codecs
の open メソッドを使用します ファイルを読み込むモジュール:
import codecs
with codecs.open(file_name, 'r', encoding='utf-8',
errors='ignore') as fdata:
エンジンを C から Python に変更するとうまくいきました。
エンジンは C:
pd.read_csv(gdp_path, sep='\t', engine='c')
<ブロック引用> 'utf-8' コーデックは位置 18 のバイト 0x92 をデコードできません:無効な開始バイト
エンジンは Python:
pd.read_csv(gdp_path, sep='\t', engine='python')
エラーはありません。
この種の問題は、私が Python 3 に移行した今、私に発生します。私は、Python 2 がファイル エンコーディングに関する問題を単純に処理しているとは思いもしませんでした。
上記のいずれもうまくいかなかった場合の違いと解決策を見つける方法について、この素晴らしい説明を見つけました。
http://python-notes.curiousefficiency.org/en/latest/python3/text_file_processing.html
つまり、Python 3 を Python 2 とできるだけ同じように動作させるには:
with open(filename, encoding="latin-1") as datafile:
# work on datafile here
ただし、記事を読んでください。万能のソリューションはありません。