You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 10:40:36