[解決済み] UnicodeDecodeError: 'ascii' コーデックは位置 2 のバイト 0xd1 をデコードできません: 序数が range(128) にありません。
質問
非常に大きなデータセットで、非標準の文字が含まれているものを扱おうとしています。私は仕事の仕様に従って、unicode を使用する必要がありますが、私は困惑しています。(そして、おそらくすべて間違っています)。
を使用して CSV を開きます。
15 ncesReader = csv.reader(open('geocoded_output.csv', 'rb'), delimiter='\t', quotechar='"')
でエンコードを試みます。
name=school_name.encode('utf-8'), street=row[9].encode('utf-8'), city=row[10].encode('utf-8'), state=row[11].encode('utf-8'), zip5=row[12], zip4=row[13],county=row[25].encode('utf-8'), lat=row[22], lng=row[23])
緯度と経度以外はすべてエンコードしていますが、これはAPIに送信する必要があるからです。データセットを使用できるようにパースするプログラムを実行すると、次のようなトレースバックが発生します。
Traceback (most recent call last):
File "push_into_db.py", line 80, in <module>
main()
File "push_into_db.py", line 74, in main
district_map = buildDistrictSchoolMap()
File "push_into_db.py", line 32, in buildDistrictSchoolMap
county=row[25].encode('utf-8'), lat=row[22], lng=row[23])
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1 in position 2: ordinal not in range(128)
私は python 2.7.2 を使っていて、これは django 1.4 で構築されたアプリの一部であることをお伝えする必要があると思います。このトピックに関するいくつかの投稿を読みましたが、どれも直接は当てはまらないようです。どんな助けでも非常に感謝されます。
また、問題を引き起こしている非標準の文字のいくつかは、Ñ とおそらく É であることも知っておきたいかもしれません。
どのように解決するのですか?
UnicodeとUTF-8はイコールではありません。後者は単なる エンコーディング に過ぎません。
あなたは間違った方法でそれを行っています。あなたは 読み UTF-8- エンコード のデータであるため デコード UTF-8でエンコードされた文字列をユニコード文字列に変換する必要があります。
というわけで、単に
.encode
を
.decode
と入力すれば、うまくいくはずです(.csvがUTF-8でエンコードされている場合)。
恥ずかしがることはありません。5 人中 3 人のプログラマーが、最初はこれを理解するのに苦労したことでしょう (もっとかもしれませんが)。
更新しました。
もし入力データが
ではない
UTF-8 でエンコードされていない場合、入力データを
.decode()
を適切なエンコーディングで書かなければなりません。もし何も与えられなければ、pythonはASCIIを仮定し、明らかに非ASCII文字では失敗します。
関連
-
[解決済み] UnicodeDecodeError: 'ascii' コーデックは、位置 13 のバイト 0xe2 をデコードできません: 序数が range(128) にありません。
-
[解決済み] UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)
-
[解決済み] UnicodeDecodeError: 'utf8'コーデックはバイト0x9cをデコードできません。
-
[解決済み] UnicodeDecodeError: 'utf8' コーデックは位置 0 のバイト 0xa5 をデコードできない: 不正なスタートバイトだ
-
[解決済み] エラー UnicodeDecodeError: 'utf-8' コーデックが位置 0 のバイト 0xff をデコードできない: 開始バイトが無効です。
-
[解決済み] PythonでファイルのMD5チェックサムを計算するには?重複
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] SQLAlchemy - テーブルのリストを取得する
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] PythonからSMTPを使用してメールを送信する
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法
-
[解決済み] pipの依存性/必要条件をリストアップする方法はありますか?