【问题标题】:How to make Python 2.x Unicode strings not print as u'string'?如何使 Python 2.x Unicode 字符串不打印为 u'string'?
【发布时间】:2011-09-22 09:27:49
【问题描述】:

我目前正在测试一个以字典形式返回大量 JSON 数据的 Web 服务。这些字典的键和值都是 unicode 字符串,因此它们打印起来像

{u'key1':u'value', u'key2':u'value2'}

在交互式解释器中打印到屏幕时。

现在假设这是一个 3 级深度、40 个元素的字典。所有这些 u 字符都使显示变得杂乱无章,让人很难一眼看出真正的数据到底是什么。即使使用 pprint

有没有办法告诉解释器我不关心普通字符串和 unicode 字符串之间的区别?我不需要也不想要 u

我发现唯一可能有帮助的是 PYTHONIOENCODING 环境变量。不幸的是,将其设置为 'ascii' 或 'latin-1' 不会让那些 u 消失。

我使用的是 Python 2.6,我使用常规的 Python 解释器或 iPython。

【问题讨论】:

标签: python unicode


【解决方案1】:

如果你想要的是 json,只需打印 json:

>>> import json
>>> print json.dumps({u'key1':u'value', u'key2':u'value2'}, indent=4)
{
    "key2": "value2", 
    "key1": "value"
}

【讨论】:

  • 嗯,这可行。一旦我回到办公室,我会尝试一下。感谢您的提示。
  • 好吧,试了之后,完美!这基本上是圣地亚哥的另一个答案的想法, json.dumps() 是“打印字典的函数”。
【解决方案2】:

为什么不创建自己的函数来打印字典? Python 的默认格式可以快速、轻松地调试,但绝对不适合 3 级深度、40 元素的字典。

【讨论】:

  • 嗯,这可以工作,但它会比这个问题真正值得付出更多的努力。我希望有类似命令行切换到解释器的东西。我已经在使用 pprint,它会完成所有格式化工作以使这些深度词典具有一定的可读性,我宁愿不重新发明轮子。
  • 好吧,你可以包装你的字符串并覆盖他们的repr方法。
猜你喜欢
  • 2010-10-10
  • 1970-01-01
  • 2014-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-16
  • 1970-01-01
相关资源
最近更新 更多