私は以下を実行しようとしています:
import json
path = 'ch02/usagov_bitly_data2012-03-16-1331923249.txt'
records = [json.loads(line) for line in open(path)]
しかし、次のエラーが発生します。
UnicodeDecodeError: 'ascii'コーデックは6987の位置にあるバイト0xe2をデコードできません:序数がrange(128)にありません
インターネットから、エンコーディングをutf-8に設定する必要があるためであることがわかりましたが、私の問題は、すでにutf-8にあることです。
sys.getdefaultencoding()
Out[43]: 'utf-8'
また、私のファイルはutf-8にあるように見えるので、本当に混乱しています。また、次のコードは機能します。
In [15]: path = 'ch02/usagov_bitly_data2012-03-16-1331923249.txt'
In [16]: open(path).readline()
これを解決する方法はありますか?
ありがとう!
編集:
コンソールでコードを実行すると機能しますが、Anaconda(https://www.continuum.io/downloads)が提供するSpyderでコードを実行すると機能しません。
何がうまくいかないか知っていますか?
テキストファイルのどこかに、ASCII以外の文字が含まれています。どういうわけか、セットアップでは、デフォルトのファイルエンコーディングがutf-8ではなくasciiに設定されているため、次のようにして、ファイルのエンコーディングを明示的に指定します。
import json
path = 'ch02/usagov_bitly_data2012-03-16-1331923249.txt'
records = [json.loads(line.strip()) for line in open(path, encoding="utf-8"))]
(デフォルトが機能している場合でも、これを行うことはとにかく良い考えです)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加