为什么我在Python 2.7中尝试打印字符串时出错?

时间:2013-04-06 00:29:12

标签: python

我正在尝试使用

https://pypi.python.org/pypi/dbf

读取数据库文件。我正在尝试按如下方式打印记录:

for record in race_db:
    print record

这给了我一条错误消息

  

UnicodeDecodeError:'ascii'编解码器无法解码位置4中的字节0xc9:序数   不在范围内(128)

所以我尝试映射到unicode

string_record = [unicode(item) for item in record]
同样的事情。 UTF-8:

string_record = [unicode(item, "utf8") for item in record]
  

TypeError:强制转换为Unicode:需要字符串或缓冲区,找到datetime.date

我只想要一些排序功能,我做错了什么?我知道我可以成功遍历所有记录,因为像:

print 'blah'

工作正常。编码中的一些东西正在绊倒我。

1 个答案:

答案 0 :(得分:4)

单字节\xC9不是UTF-8中任何内容的有效编码。您需要弄清楚文本当前是如何编码的 - 在这种情况下,它最有可能是ISO 8859-1Windows-1252。然后,相应地解码它。

例如,如果是Windows-1252,则按如下方式对其进行解码:

string_record = 'foo \xc9 bar'
print string_record.decode('Windows-1252')  # Output: "foo É bar"