首页 文章

将一个json文件解压缩到python中的字典中

提问于
浏览
1

我正在尝试编写一个带有json文件pizza-train.json的脚本,并从列表中的每个字典中提取request_text字段 . 但是在运行以下代码时出现错误:

Code:

import json

json1_file = open("pizza-train.json", 'r')
json1_str = json1_file.read()

json1_data = json.loads(json1_str)

print(json1_data)

Error:

文件“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

1 回答

  • 0

    您的数据有一些字符(位置58765-58767)无法用您的字符集表示(Windows1252) . 您应该将控制台切换到支持它的charset(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代码页)

相关问题