【问题标题】:json.dump unicode from unicode in Python 2? - TypeErrorjson.dump unicode 来自 Python 2 中的 unicode? - 类型错误
【发布时间】:2018-06-17 01:20:46
【问题描述】:

追溯

    dump({'foo':{'bar': 5}}, getwriter('utf8')(f), ensure_ascii=False, encoding='utf8')
  File "/usr/lib/pypy/lib-python/2.7/json/__init__.py", line 196, in dump
    fp.write(chunk)
  File "/usr/lib/pypy/lib-python/2.7/codecs.py", line 370, in write
    self.stream.write(data)
TypeError: unicode argument expected, got 'str'

代码

from __future__ import unicode_literals

from codecs import getwriter
from io import open
from os import path
from tempfile import gettempdir
from json import dump

with open(path.join(gettempdir(), 'bar'), 'wt', encoding='utf8') as f:
    dump({'foo':{'bar': 5}}, getwriter('utf8')(f), ensure_ascii=False,
         encoding='utf8')

(run with ideone)

【问题讨论】:

  • 是唯一的solution使用json.dumps,还是有办法使用json.dump

标签: python json python-2.7 unicode ascii


【解决方案1】:

这很奇怪,将导入更改为:

from io import open

收件人:

from codecs import open

成功了。尽管https://stackoverflow.com/a/844443 说第一个是 最佳实践:\

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    相关资源
    最近更新 更多