我正在尝试运行以下内容:
import json
path = 'ch02/usagov_bitly_data2012-03-16-1331923249.txt'
records = [json.loads(line) for line in open(path)]
但是我收到以下错误:
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe2 in position
6987: ordinal not in 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提供的Spyder中运行它时(https://www.continuum.io/downloads)
你知道什么可能出错吗?
最佳答案 文本文件在某处某行包含一些非ascii字符.在您的设置上,默认文件编码设置为ascii而不是utf-8,因此请执行以下操作并明确指定文件的编码:
import json
path = 'ch02/usagov_bitly_data2012-03-16-1331923249.txt'
records = [json.loads(line.strip()) for line in open(path, encoding="utf-8"))]
(即使默认有效,这样做也是个好主意)