Python商品评论分析器utf-8解码错误求助:无法解码字节0xfe
商品评论分析器编码错误解决方案
一、错误原因
你遇到的'utf-8' codec can't decode byte 0xfe...错误,是因为CSV文件的编码并非UTF-8。用Excel保存的CSV,默认可能采用UTF-16(带BOM)或GBK/GB2312编码,而pd.read_csv默认用UTF-8读取,导致解码失败。
二、解决数据集导入问题
1. 直接指定编码读取
修改pd.read_csv的编码参数,优先尝试以下两种编码:
# 针对Excel导出的UTF-16带BOM格式 data = pd.read_csv("data.csv", encoding='utf-16') # 如果上面不行,尝试中文Windows环境常用的GBK编码 # data = pd.read_csv("data.csv", encoding='gbk')
2. 重新保存CSV为UTF-8格式
如果不想修改代码,可通过Excel重新导出CSV:
- 打开Excel数据集文件,点击「文件」→「另存为」
- 选择「CSV(逗号分隔)(*.csv)」格式
- 点击「工具」→「Web选项」→「编码」,选择「UTF-8」后保存
三、代码优化建议
除了编码问题,你的代码还有几个可优化点:
- 不要用
str作为变量名,这是Python内置类型,会覆盖内置功能 - 统计词频无需手动循环,用
collections.Counter更高效 - 将DataFrame的正负词列转为集合,可大幅提升单词查找速度(DataFrame列的
in操作默认按索引查找,而非元素)
优化后的示例代码:
import numpy as np import pandas as pd from collections import Counter # 解决编码问题后导入数据 data = pd.read_csv("data.csv", encoding='utf-16') # 转换为集合,加快查找速度 positive_words = set(data["Positive"].dropna()) negative_words = set(data["Negative"].dropna()) # 示例评论文本 review_text = "this product is great and useful but the quality is bad" def analyze_review(text): words = text.split() print(f"评论中共包含 {len(words)} 个单词") # 统计词频 word_counts = Counter(words) most_common_word, count = word_counts.most_common(1)[0] # 筛选正负反馈词 positives = [word for word in words if word in positive_words] negatives = [word for word in words if word in negative_words] print(f"正向反馈词:{positives},共 {len(positives)} 个") print(f"负向反馈词:{negatives},共 {len(negatives)} 个") print(f"出现次数最多的词:{most_common_word},共 {count} 次") analyze_review(review_text)
内容的提问来源于stack exchange,提问作者memos815
相关产品推荐
相关产品推荐

