在python中将json文件提取到字典中
Posted
技术标签:
【中文标题】在python中将json文件提取到字典中【英文标题】:Extract a json file into a dictionary in python 【发布时间】:2015-12-04 16:38:38 【问题描述】:我正在尝试编写一个脚本,该脚本采用 json 文件 pizza-train.json 并从列表中的每个字典中提取 request_text 字段。但是运行以下代码时出现错误:
代码:
import json
json1_file = open("pizza-train.json", 'r')
json1_str = json1_file.read()
json1_data = json.loads(json1_str)
print(json1_data)
错误:
文件“C:\Python34\lib\encodings\cp1252.py”,第 19 行,编码返回 codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError:“charmap”编解码器无法对位置 58765-58767 中的字符进行编码:字符映射到
我尝试了不同的解决方案,例如:encoding="UTF-8"
.encode('utf-8')
谁能解释我为什么它不打印 json1_data ?
【问题讨论】:
请提供完整的堆栈跟踪。您是否在print(json1_data)
行收到此错误?如果是,那么您不能在控制台中打印非 Windows1252 字符,因为这是您的控制台字符集。
我在该行得到了错误。如何更改他的控制台字符集?
显示答案:使用chcp
。长答案如下
【参考方案1】:
您的数据中有一些字符(位置 58765-58767)无法用您的字符集 (Windows1252) 表示。您应该将控制台切换到支持它的字符集(Windows 中的chcp
命令)。
示例如下:
我有文件:
# coding=utf-8
print(u"русский текст") # This is russian text (cyrilic chars)
文件本身是 UTF8,因此 Python 知道字母“й”是西里尔字母。
但我的代码页 CP1252 没有这样的字母(因为它只有拉丁字符)。
>chcp
Active code page: 1252
>python.exe foo.py
Traceback (most recent call last):
File "foo.py", line 2, in <module>
print(u"руÑÑкий текÑÑ‚")
File "c:\Python27\lib\encodings\cp1252.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-6: character maps to <undefined>
我现在将我的代码页更改为一个,其中包含字母“й”和其他:
>chcp 1251
Active code page: 1251
>c:\Python27\python.exe foo.py
русский текст
我可以使用 866(这也是 DOS cyr 代码页)
【讨论】:
以上是关于在python中将json文件提取到字典中的主要内容,如果未能解决你的问题,请参考以下文章
追加到 json 中转储的字典列表,而不用 python 加载列表