问题描述:

在kaggle上导入数据集,却不是网上大家所说的下载界面,而是全部的文字。

问题解决:

我们看报错的信息就可以发现,是在Kaggle上传数据集时遇到文件名包含非法字符的问题,需要先清理这些文件名。

解决方法:

通过python,对文件名进行统一处理,把有问题的文件名全部替换掉。

需要修正的问题类型:

  1. 非法字符&'#[>< 等

  2. 尾部空格:文件名末尾有空格

  3. HTML实体:如 &amp;&#39; 等需要转义

利用deepseek帮我改了好几版,终于解决了。

前面几版都是文件名字没有改干净。

方法和代码如下:

第一阶段:环境准备

  1. 创建专用工作区
    • 在桌面右键 → 新建 → 文件夹 → 命名为 Kaggle终极修复

    • 双击进入文件夹

  2. 放入原始文件
    • 将你的 development.zip 复制到该文件夹

  3. 安装必要软件
    • 下载 Python 3.8+:

      • 安装时勾选:

        • ☑ Add Python to PATH

        • ☑ Install launcher for all users


第二阶段:创建脚本文件

  1. 创建清理脚本
    • 在文件夹空白处右键 → 新建 → 文本文档

    • 重命名为 fix.py(注意:去掉.txt后缀)

      • 如果看不到文件扩展名:

        • 打开文件资源管理器 → 查看 → 勾选"文件扩展名"

  2. 编辑脚本内容
    • 右键 fix.py → 用记事本打开

    • 粘贴以下代码(完整版):

      import re
      import zipfile
      import uuid
      from pathlib import Path
      
      def super_clean(text):
          """终极清理函数"""
          # 替换表(特殊字符 → 安全字符)
          replace_dict = {
              "&amp;": "and", "&#39;": "s", "'": "", 
              "(": "_", ")": "_", "[": "_", "]": "_",
              "{": "_", "}": "_", "<": "to", ">": "from",
              "#": "no", "@": "at", "!": "", "?": "",
              ",": "_", ";": "_", " ": "_", "\\": "_", "/": "_"
          }
          for old, new in replace_dict.items():
              text = text.replace(old, new)
          
          # 最终过滤(只保留字母数字和下划线)
          text = re.sub(r"[^a-zA-Z0-9_]", "", text)
          return text[:60]  # 截断到60字符
      
      def process_zip():
          print("="*50)
          print("开始处理ZIP文件...".center(50))
          
          with zipfile.ZipFile("development.zip", 'r') as zin:
              with zipfile.ZipFile("kaggle_ready.zip", 'w') as zout:
                  for item in zin.infolist():
                      if item.is_dir(): continue
                      
                      # 处理路径和文件名
                      path = Path(item.filename)
                      new_name = f"{super_clean(path.stem)}_{uuid.uuid4().hex[:4]}{path.suffix.lower()}"
                      
                      # 写入新ZIP(保留原始时间戳)
                      with zin.open(item) as f:
                          zout.writestr(new_name, f.read())
                      
                      # 打印处理日志
                      print(f"{path.name[:25]:<25} → {new_name[:25]}...")
      
          print("="*50)
          print("处理完成!最终文件:kaggle_ready.zip".center(50))
          print("="*50)
      
      if __name__ == "__main__":
          process_zip()

    • 保存文件
      • 按 Ctrl + S 保存

      • 关闭记事本、

第三阶段:运行清理脚本

  1. 打开命令行
    • 在文件夹空白处按住 Shift + 右键

    • 选择 "在此处打开 PowerShell 窗口"

  2. 首次验证原始文件
    # 查看原始文件结构
    python -m zipfile -l development.zip > original.txt
    notepad original.txt
    
    3执行
    python fix.py
    

    然后再将要上传的文件压缩,拉到kaggle的上传界面。看能不能解决这个问题。如果不行,把报错的信息复制给AI让他给你解决,完全解决以后,就可以找到解决的办法了。

在AI时代,我们什么都不会也可以解决问题。只是如果我们会,可以少花一些精力,少给AI喂几次。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐