我正在处理一些非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字符时,如何保持一致的解码
答案 0 :(得分:2)
将我的评论移至答案并提供更多详细信息:
当您要求口译员打印列表时,实际上最终看到的是列表中每个项目的repr
命令的结果。通常这意味着你会看到这样的事情:
[<generator object <genexpr> at 0x020C64E0>]
使用字符串列表,repr
值将显示转义序列。当您尝试将字符串直接打印到控制台时,突然编码和字符集成为一个问题。您可以通过print repr(line)
访问转义的输出。