【发布时间】:2015-02-27 04:00:33
【问题描述】:
我正在从一个目录中读取一个 utf-8 文本文件,然后我将读取的文本插入到一个列表中,我得到了一些像这样的元组:
l = [('mucho','fácil'),...,('yo','hola')]
当我在控制台上打印它时,我有以下内容:
print l
('mucho','f\xc3\xa1cil'),...,('yo','hola')
所以我尝试了以下方法:
fixing_l = [x.encode('utf-8') for x in l]
当我尝试打印它时,我得到了这个异常:
AttributeError: 'tuple' object has no attribute 'encode'
我怎样才能编码和修复字符串并得到这样的东西?:
('mucho','fácil'),...,('yo','hola')
【问题讨论】:
-
如果你想打电话给
encode,那就不行了;您在元组中的内容是<type 'str'> -
好的,我将其更改为解码
-
当您
print一个容器 时,您总是,不可避免地会看到容器项目的repr。因此,没有方法可以创建一个元组列表,在print上显示项目的str而不是它们的repr。如果需要,您需要一个自定义的容器类! -
在 Python 3 中,字符串的
repr恰好是您在这里想要的;在 Python 2.7 中,当字符串包含非 ASCII 字符时,情况并非如此。这就是为什么你需要一些自定义技巧......如果有的话(因为__repr__has 仅在 Python 2.7 中返回 ASCII 字符)。
标签: python python-2.7 encoding io character-encoding