我试图在python 3.8中执行此代码段
def load_rightprob(self, rightprob_file):
''' dictionary with # people keys with # actions '''
rightProb = {}
for line in open(rightprob_file):
items = line.strip().split("\t")
if len(items) != len(self.action_qid_dict) + 1:
continue
pid = int(items[0])
但我得到了这个错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
我尝试了for line in open(rightprob_file, **'rb'**):
,但是我在下面的一行遇到了这个错误:
TypeError: a bytes-like object is required, not 'str'
有人能建议一下如何解决这个问题吗?我正在读取一个.txt文件,其中每一行都是一个ID,后面是377列,表示与该ID关联的概率值
文本文件以
0xff
开头是非常罕见的。因此,它有时被故意放在文件的开头,作为Unicode Byte Order Mark (BOM)的一部分,特别是在Windows上。正如您在链接中的表中所看到的,只有两种Unicode编码的BOM表以0xff
开头:UTF-16或UTF-32,都是小端。在这两种情况中,UTF-16更为常见因此,请按如下方式打开您的文件:
我添加了
with
以便在完成时自动关闭该文件,这是原始代码中的一个bug从文件中读取的第一个字符将是
u'\ufeff'
,可以丢弃或忽略相关问题 更多 >
编程相关推荐