我在记事本中保存了一个包含ANSI编码列表的文本文件。
当我尝试使用Python中的以下脚本显示列表时,它会显示列表中的第一项,然后给出“output not utf-8”错误消息。
with open("animals.txt") as f:
content = f.readlines()
for animal in content:
print animal
有什么方法可以解决这个问题吗?
答案 0 :(得分: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代码页;在这种情况下,为Microsoft的西欧Latin-1变体选择正确的cp
编解码器,例如cp1250
或cp1252
。