【问题标题】:Unicode Error for list object in PythonPython中列表对象的Unicode错误
【发布时间】:2016-05-15 18:59:30
【问题描述】:

我在尝试打印一些字符串时在 Python 中遇到了一些 Unicode 错误,我使用以下帖子中给出的答案的第二个要点中的以下代码解决了大部分错误: UnicodeEncodeError: 'charmap' codec can't encode - character maps to <undefined>, print function

# -*- coding: utf-8 -*-
import sys

print sys.stdout.encoding
print u"Stöcker".encode(sys.stdout.encoding, errors='replace')
print u"Стоескер".encode(sys.stdout.encoding, errors='replace')

但是,尝试在列表对象上使用它时出现错误。它给了我一个错误,该列表没有“编码”属性。

有人有一个干净的解决方案来解决这个问题吗?

感谢任何帮助!

【问题讨论】:

  • 应用encode() 列出项目,而不是列表本身
  • 请添加您获得的输出(错误文本)和您的 python 版本。在这里工作...
  • '''它给了我一个错误,列表没有属性“encode”。'''那是因为list没有encode方法,即method on a str or unicode
  • 如果您选择[1,2,3].encode(...),您希望会发生什么?编码只对字符串有意义,而不是列表。如果您想对每个元素进行编码,请执行以下操作:for i,item in enumerate(my_list): my_list[i] = item.encode(...) 或使用列表理解的编码项目创建一个新列表:[item.encode(...) for item in my_list]

标签: python list unicode


【解决方案1】:

当您打印一个列表时,执行打印的例程将采用非字符串对象并调用它们的__str__ 方法将它们转换为字符串。但是你试图调用非字符串对象的decode方法,而非字符串对象没有decode方法。

解决此问题的一种方法是将unicode 函数应用于列表,然后调用生成的字符串的decode 方法。

print unicode([u"Stöcker", u"Стоескер"]).encode(
               sys.stdout.encoding, errors='replace')

这应该适用于大多数对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    相关资源
    最近更新 更多