在做某商品评价分析时,发现会有表情的非字符。在保存成txt文本时,提示报错
UnicodeEncodeError: 'gbk' codec can't encode character '\U0001f495' in position 16: illegal
这个报错,说明有些字符,gbk是无法解析的。所以要把这些字符过滤掉。最简单粗暴的方式,我是这样做的,仅供参考。
仅列出关键操作代码
result = collection.find({"__time": {"$regex": "2018-11-30"}}, ["product_id", "content"] )
for i in result:
with open("nlptest.txt", 'a+') as f:
f.write(i["product_id"] + "|" + i["content"].encode('gbk', 'ignore').decode('gbk') +"\n")
(Python3)其中,encode('gbk', 'ignore').decode('gbk') 是关键。在gbk解码时忽略掉不能解码的数据