python - 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()
解决方案
“编解码器无法解码字节 0x8”同时读取一段时间?
这是一个非常常见的问题,有一个非常常见的解决方案。您在读取文件时没有提及编码。
在打开文件时尝试这样的事情:
file = open(os.path.join(self.dirname, fname), encoding="utf8")
希望这可以帮助。祝你好运。
推荐阅读
- javascript - 在嵌套 JSON 上使用 dc.js 创建条形图
- kubernetes - Pod 不在本地路径上写入
- sql - SQL 存储过程参数 - 方法
- c# - c#如何拆分包含Json数据的字符串
- node.js - 定向到文件时如何从Nodejs中的标准输出刷新管道输出
- excel - 如何向现有图表添加额外的 x 轴?
- python - Scrapy/Python/MySQL:将附加项目信息保存在单独的表中的最佳方法是什么?
- c++ - zeroupper 导致不正确的结果
- angular - 角材料选项卡内的角反应形式给出错误
- c# - 在 Asp.net core 的 startup.cs 中获取用户名