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

Python-显示非UTF-8字符、字符串的不同行为和字符串列表,python,utf-8,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

我正在编写一些非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']
[Decode error - output not utf-8]
[Decode error - output not utf-8]
[Finished in 0.1s]
[在0.1s内完成]

然而,通过列表循环:

for line in lines:
    print line
结果如下:

['\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']
[Decode error - output not utf-8]
[Decode error - output not utf-8]
[Finished in 0.1s]

在处理非utf-8字符时,我如何保持一致的解码,以将我的评论移至答案并提供更多细节:

当您要求解释器打印列表时,您实际看到的是列表中每个项目的
repr
命令的结果。通常情况下,这意味着您会看到如下情况:

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

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

访问转义输出。为什么要处理非
unicode
s?请尝试
print repr(line)
——这就是您在执行
print line
时看到的每个项目。因为我的文档是用非utf-8编写的。可打印字符相同,但标记和控制字节不同。@g.d.d.c有效。谢谢如果你加上答案,我会打勾。