首页 > 解决方案 > Gensim从文件夹charmap编解码器迭代文件无法解码字节

问题描述

我正在关注这个 Word2Vec 教程。我想做一个 gensim 模型,我想做的第一件事就是试试这个代码:

class MySentences(object):
    def __init__(self, dirname):
        self.dirname = dirname

    def __iter__(self):
        for fname in os.listdir(self.dirname):
            for line in open(os.path.join(self.dirname, fname)):
                yield line.split()

sentences = MySentences('wos_abstracts') # a memory-friendly iterator
model = gensim.models.Word2Vec(sentences) 

wos_abstracts 是一个文件夹,其中包含用于创建模型的数百个文件。当我尝试运行它时,它返回错误“'charmap'编解码器无法解码字节0x8”。我想,如果正确的话,这与unicode有关,那么如何根据上面的代码实现文件读取为unicode呢?如果没有,我应该添加什么?感谢您的帮助。

更新(答案)

for fname in os.listdir(self.dirname):
    with open(os.path.join(self.dirname, fname), encoding="utf8") as f:
        yield f.read()

标签: pythonencoding

解决方案


“编解码器无法解码字节 0x8”同时读取一段时间?

这是一个非常常见的问题,有一个非常常见的解决方案。您在读取文件时没有提及编码。

在打开文件时尝试这样的事情:

file = open(os.path.join(self.dirname, fname), encoding="utf8")

希望这可以帮助。祝你好运。


推荐阅读