mifavhalcyon 2023-02-12 23:40 采纳率: 100%
浏览 45
已结题

UnicodeDecodeError: 'gbk' codec can't decode byte 0x93 in position 596: illegal multibyte sequence

UnicodeDecodeError: 'gbk' codec can't decode byte 0x93 in position 596: illegal multibyte sequence

if __name__ == '__main__':
    ws = Word2Sequence()
    path = r"D:\data\Desktop\aclImdb_v1.tar\aclImdb_v1\aclImdb\train"
    temp_data_path = [os.path.join(path,"pos"),os.path.join(path,"neg")]
    for data_path in temp_data_path:
        file_paths = [os.path.join(data_path,file_name) for file_name in os.listdir(data_path) if file_name.endswith("txt")]
        for file_path in tqdm(file_paths):
            sentence = tokenlize(open(file_path).read())
            ws.fit(sentence)
    ws.build_vocab(min=10,max_feature=5000)
    pickle.dump(ws, open("../pythonProject/ws.pkl",'rb'))   
    print(len(ws))

按照网上的解答,在open()里加入encoding
pickle.dump(ws, open("../pythonProject/ws.pkl",'rb',encoding='utf-8'))
但不论是加入encoding='utf-8'还是再加一个error='ignore'
依然报相同的错误
是不是环境的问题啊?

  • 写回答

3条回答 默认 最新

  • Yang2023. 2023-02-13 09:19
    关注
    1. 在第5行中,应将open函数的参数改为'rb';
    2. 在第13行中,应将print函数的参数改为len(ws.vocab);
    3. 在第14行中,应将open函数的参数改为'wb';

    经过修改后,代码如下:

    
    
    
    ```python
    
    
    
    if __name__ == '__main__':
        ws = Word2Sequence()
        path = r"D:\data\Desktop\aclImdb_v1.tar\aclImdb_v1\aclImdb\train"
        temp_data_path = [os.path.join(path,"pos"),os.path.join(path,"neg")]
        for data_path in temp_data_path:
            file_paths = [os.path.join(data_path,file_name) for file_name in os.listdir(data_path) if file_name.endswith("txt")]
            for file_path in tqdm(file_paths):
                sentence = tokenlize(open(file_path, 'rb').read())
                ws.fit(sentence)
        ws.build_vocab(min=10,max_feature=5000)
        pickle.dump(ws, open("../pythonProject/ws.pkl",'wb'))   
        print(len(ws.vocab))
    
    
    

    ```

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 小斌哥ge Python领域优质创作者 2023-02-13 00:12
    关注

    第一,encoding='utf-8'加上。
    第二,pickle.dump的用法是:dump(obj, file): 将Python对象序列化,并将序列化结果写入到打开的文件中。你把rb换成wb。
    试试看行不行。

    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2023-02-14 02:13
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月21日
  • 已采纳回答 2月13日
  • 创建了问题 2月12日

悬赏问题

  • ¥20 unity打光没有照亮物体
  • ¥25 powershell如何拷贝1周前的文件
  • ¥15 询问MYSQL查询SQLSERVER数据表并比较差异后,更新MYSQL的数据表
  • ¥15 关于#前端#的问题,请各位专家解答!
  • ¥15 最小生成树问题 Prim算法和Kruskal算法
  • ¥25 医院住院病人呼叫器设计
  • ¥15 不想和现在的团队合作了,怎么避免他们对程序动手脚
  • ¥20 C语言字符串不区分大小写字典排序相关问题
  • ¥15 关于#python#的问题:我希望通过逆向技术爬取1688搜索页下滑加载的数据
  • ¥15 关于Linux的终端里,模拟实现一个带口令保护的屏保程序遇到的输入输出的问题!(语言-c语言)