首页 文章

尝试从文本文件中打印简单列表时出现'output not utf-8'错误

提问于
浏览
1

我在记事本中保存了一个包含ANSI编码列表的文本文件 .

当我尝试使用Python中的以下脚本显示列表时,它会显示列表中的第一项,然后给出“output not utf-8”错误消息 .

with open("animals.txt") as f:
    content = f.readlines()

for animal in content:
    print animal

有没有办法解决这个问题?

1 回答

  • 3

    您正在读取一个字节字符串,然后将这些原始字节直接传输到您的输出,并且您的终端或IDE控制台抱怨字节流包含UTF-8中非法的序列 .

    使用codecs.open()将文件读入unicode数据,然后让Python自动将unicode值编码到终端编解码器:

    import codecs
    
    with codecs.open("animals.txt", 'r', encoding='mbcs') as f:
        content = f.readlines()
    
    for animal in content:
        print animal
    

    或直接在文件上循环:

    import codecs
    
    with codecs.open("animals.txt", 'r', encoding='mbcs') as f:
        for animal in f:
            print animal
    

    mbcs 是Windows ANSI代码页的Python名称:

    仅限Windows:根据ANSI代码页(CP_ACP)编码操作数

    也许你的意思是一个不同的,特定的Windows代码页;在这种情况下,选择正确的 cp 编解码器,例如 cp1250cp1252 ,用于Microsoft的西欧Latin-1变体 .

相关问题