Python 2.7 JSON转储UnicodeEncodeError

迪米特里奥斯

我有一个文件,其中每一行都是一个json对象,如下所示:

{"name": "John", ...}

{...}

我试图用相同的对象创建一个新文件,但是从所有对象中删除某些属性。

当我这样做时,我得到一个UnicodeEncodeError。奇怪的是,如果我改为循环range(n)(用n表示)并使用infile.next(),它会按我的意愿工作。

为什么这样?如何通过迭代使它起作用infile我试着用dumps()代替dump(),但是那只会在里产生一堆空行outfile

with open(filename, 'r') as infile:
    with open('_{}'.format(filename), 'w') as outfile:
        for comment in infile:
            decodedComment = json.loads(comment)
            for prop in propsToRemove:
                # use pop to avoid exception handling
                decodedComment.pop(prop, None)
            json.dump(decodedComment, outfile, ensure_ascii = False)
            outfile.write('\n')

这是错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\U0001f47d' in position 1: ordinal not in range(128)

谢谢您的帮助!

兹普利齐

您面临的问题是标准file.write()函数(由json.dump()函数调用)不支持unicode字符串。从错误消息中可以看出,您的字符串包含UTF字符\U0001f47d(可能是字符EXTRATERRESTRIAL ALIEN的代码,谁知道呢?),以及其他可能的UTF字符。要处理这些字符,您可以将它们编码为ASCII编码(它们将显示为\XXXXXX显示在输出文件中),或者您需要使用可以处理unicode的文件编写器。

要执行第一种选择,请用以下行替换您的书写行:

json.dump(unicode(decodedComment), outfile, ensure_ascii = False)

第二个选项可能是您想要的,而一个简单的选项是使用该codecs模块。导入它,然后将第二行更改为:

with codecs.open('_{}'.format(filename), 'w', encoding="utf-8") as outfile:

然后,您将能够以特殊形式保存特殊字符。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JSON转储格式Python

来自分类Dev

从python转储JSON并在js2py环境中解析时引号短缺

来自分类Dev

python json转储unicode错误

来自分类Dev

Python JSON转储附加字符

来自分类Dev

Python编码和JSON转储

来自分类Dev

使用json转储的python名称处理

来自分类Dev

Python:Json转储转义报价

来自分类Dev

密钥的 Json 转储,在 Python 中配对

来自分类Dev

从python中的字典列表创建分层json转储

来自分类Dev

将Python字典转储到JSON文件

来自分类Dev

python json转储可写性“无法写”

来自分类Dev

如何在python中正确编码json转储

来自分类Dev

python json转储可写性“无法写”

来自分类Dev

Python 中包含元组的 dict 的 Json 转储

来自分类Dev

尝试使用Windows 7为Symfony2项目转储资产时的运行时异常

来自分类Dev

Websphere 7线程转储分析

来自分类Dev

Python json转储引发错误,因为“不是JSON可序列化的”

来自分类Dev

Python json转储引发错误,因为“不是JSON可序列化的”

来自分类常见问题

ValueError:不支持的泡菜协议:3,python2泡菜无法加载python 3泡菜转储的文件?

来自分类Dev

使用Python的ujson模块进行JSON转储非数字浮点数

来自分类Dev

如何在字典中添加键值对以在python中以JSON格式转储数据?

来自分类Dev

使用Python,如何将json转储另存为CouchDB文档?

来自分类Dev

如何将对象列表转储到python django中的json中

来自分类Dev

Jinja2转储为对象?

来自分类Dev

Python不会转储核心文件

来自分类Dev

如何在Windows 7中转储进程的内存?

来自分类Dev

如何在Windows 7下删除故障转储文件

来自分类Dev

如何分析 windows 7 bsod 错误小型转储?

来自分类Dev

如何将多个python对象转储和加载到json文件中或从json文件中加载?

Related 相关文章

  1. 1

    JSON转储格式Python

  2. 2

    从python转储JSON并在js2py环境中解析时引号短缺

  3. 3

    python json转储unicode错误

  4. 4

    Python JSON转储附加字符

  5. 5

    Python编码和JSON转储

  6. 6

    使用json转储的python名称处理

  7. 7

    Python:Json转储转义报价

  8. 8

    密钥的 Json 转储,在 Python 中配对

  9. 9

    从python中的字典列表创建分层json转储

  10. 10

    将Python字典转储到JSON文件

  11. 11

    python json转储可写性“无法写”

  12. 12

    如何在python中正确编码json转储

  13. 13

    python json转储可写性“无法写”

  14. 14

    Python 中包含元组的 dict 的 Json 转储

  15. 15

    尝试使用Windows 7为Symfony2项目转储资产时的运行时异常

  16. 16

    Websphere 7线程转储分析

  17. 17

    Python json转储引发错误,因为“不是JSON可序列化的”

  18. 18

    Python json转储引发错误,因为“不是JSON可序列化的”

  19. 19

    ValueError:不支持的泡菜协议:3,python2泡菜无法加载python 3泡菜转储的文件?

  20. 20

    使用Python的ujson模块进行JSON转储非数字浮点数

  21. 21

    如何在字典中添加键值对以在python中以JSON格式转储数据?

  22. 22

    使用Python,如何将json转储另存为CouchDB文档?

  23. 23

    如何将对象列表转储到python django中的json中

  24. 24

    Jinja2转储为对象?

  25. 25

    Python不会转储核心文件

  26. 26

    如何在Windows 7中转储进程的内存?

  27. 27

    如何在Windows 7下删除故障转储文件

  28. 28

    如何分析 windows 7 bsod 错误小型转储?

  29. 29

    如何将多个python对象转储和加载到json文件中或从json文件中加载?

热门标签

归档