Python - 显示非UTF-8字符,字符串和字符串列表的不同行为

时间:2014-02-12 17:57:16

标签: python utf-8

我正在处理一些非utf-8文本。

只要我从列表中工作,我就可以将非utf8字符转换为其字节值的字符串转储到终端。如果我遍历列表,我会收到解码错误。

怎么回事?

lines = ['\xa0\xa0\xa0\xa0\xa0\xa0\xa0Example:- Line 1\x02.\r\n', 
"\xa0\xa0\xa0\xa0\xa0\xa0\xa0\x02\x13Markup\x13 Example:- Line 2\x8d\n", 
'\xa0\xaExample:- Line 3\r\n', 
'\xa0\xa0\xa0\xa0\xa0\xa0\xa0\x13Markup\x13 Example:- Line 4\x8d\n']

这是一个行列表

print lines

导致: -

['\xa0\xa0\xa0\xa0\xa0\xa0\xa0Example:- Line 1\x02.\r\n', '\xa0\xa0\xa0\xa0\xa0\xa0\xa0\x02\x13Markup\x13 Example:- Line 2\x8d\n', '\xa0\xaexample:- Line 3\r\n', '\xa0\xa0\xa0\xa0\xa0\xa0\xa0\x13Markup\x13 Example:- Line 4\x8d\n']

[以0.1秒完成]

然而,循环遍历列表: -

for line in lines:
    print line

导致: -

[Decode error - output not utf-8]
[Decode error - output not utf-8]
[Finished in 0.1s]

在处理非utf-8字符时,如何保持一致的解码

1 个答案:

答案 0 :(得分:2)

将我的评论移至答案并提供更多详细信息:

当您要求口译员打印列表时,实际上最终看到的是列表中每个项目的repr命令的结果。通常这意味着你会看到这样的事情:

[<generator object <genexpr> at 0x020C64E0>]

使用字符串列表,repr值将显示转义序列。当您尝试将字符串直接打印到控制台时,突然编码和字符集成为一个问题。您可以通过print repr(line)访问转义的输出。