我有大量的文件和解析器.我要做的是go 掉所有非utf-8符号,并将数据放入mongodb.

with open(fname, "r") as fp:
    for line in fp:
        line = line.strip()
        line = line.decode('utf-8', 'ignore')
        line = line.encode('utf-8', 'ignore')

不知怎的,我还是犯了个错误

bson.errors.InvalidStringData: strings in documents must be valid UTF-8: 
1/b62010montecassianomcir\xe2\x86\x90ta0\xe2\x86\x90008923304320733/290066010401040101506055soccorin

我不明白.有什么简单的方法吗?

UPD:Python和Mongo似乎不同意Utf-8有效字符串的定义.

推荐答案

试着在代码行下方而不是最后两行.希望有帮助:

line=line.decode('utf-8','ignore').encode("utf-8")

Mongodb相关问答推荐

在MogoDB中按时间间隔分组、统计文档和获取间隔时间

MongoDB通过查找具有多个数组的对象进行聚合

Mongoose 排除数组中包含特定嵌套对象的文档

如何获取键值对的对象,其中值仅具有 mongoDB 中的投影字段

MongoDB 聚合 - $project 和 $match 阶段未按预期工作

MongoDB DB参考返回null值

构造函数的参数 0 需要错误类型的 bean

使用 mongo-driver/mongo 使用键/值对中的值表达式查找文档

映射数组导致 mongodb 聚合

在 mongodb 聚合中的阶段之后输出具有序列数字 id 的新集合

MongoDB - 如果新值更大,则更新字段

如何根据_id删除文档?

MongoDB 中 cursor.count() 和 cursor.size() 之间的区别

从性能Angular 来看 MongoDB 嵌入式与参考

MongoDB 批处理操作的最大大小是多少?

使用 MongoDB Java 驱动程序将 DBObject 转换为 POJO

MongoDB Java API:put() 与 append()

$orderby 和 Sort 之间的 MongoDB 区别

Mongo:无法在 src/mongo/shell/mongo.js:145 连接到服务器 127.0.0.1:27017

处理Mongodb连接的正确方法是什么?