【问题标题】:Solving the unicode output in Python在 Python 中解决 unicode 输出
【发布时间】:2010-10-22 08:06:16
【问题描述】:

我编写了一些代码,将查询发送到谷歌并返回查询结果。显然,检索到的内容是 unicode 格式,所以当我将它们放在一个列表中并打印这个列表(整个列表在一起而不是逐个成员)时,一个烦人的额外“u”总是在所有成员后面这个列表..我怎样才能摆脱它们?我试图将整个文本转换为 ascii,但是因为文本中有一些非 ascii 字符(不同的语言)它失败了,现在你知道我应该怎么做才能获得更好的输出吗?我希望这个额外的“你”不会造成任何麻烦。谢谢

【问题讨论】:

  • 为什么'u'有问题?它只是化妆品吗?还是您需要将此输出用于其他用途?
  • 非 ASCII 字符会发生什么?

标签: python unicode encoding unicode-string


【解决方案1】:

代替:

>>> print your_list
[u'foo', u'bar']

用途:

>>> print '\n'.join(your_list)
foo
bar

如果您希望将其全部放在一行上,可以使用', ' 而不是'\n' 作为分隔符。

如果您尝试在 Windows 控制台中显示 Unicode 字符,也可能会遇到问题。如果是这样,您可以使用例如可以显示 Unicode 字符的 IDLE。或者,您可以转换为 ASCII 并忽略 ASCII 中不存在的字符:

print '\n'.join(x.encode('ascii', 'ignore') for x in your_list)

【讨论】:

    【解决方案2】:

    如果你要对输出做任何有意义的事情,你必须决定你想要哪种输出编码。扔掉所有那些非 ASCII 字符甚至不是第二好的解决方案。 决定一个适当的输出编码(例如,对于 shell 输出你的 shell 编码,对于 web 输出你的 web 编码,最好的全能是 UTF-8)并适当地编码:', '.join(x.encode('utf-a') for x in your_list) (En-/Decoding )

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-21
      • 2019-05-21
      • 1970-01-01
      • 2019-02-14
      • 2011-01-15
      • 1970-01-01
      • 2015-11-08
      相关资源
      最近更新 更多