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

如何移除DataFrame中文件名的父目录路径?

问题分析

你遇到的核心问题是字符串中反斜杠的转义处理错误,以及引号使用不当导致的语法报错。另外方法4的思路绕了弯路,没有直接定位到要移除的完整前缀。

正确解决方案

下面是几种直接有效的方法,按推荐程度排序:

1. 用os.path.basename提取文件名(最稳妥通用)

这个方法不需要关心具体前缀格式,直接从路径中提取最终的文件名,适配各种路径类型:

import os
df["filename"] = df["filename"].apply(os.path.basename)

比如输入".\XML files\ABC123.xml",直接输出"ABC123.xml"。

2. 正确转义后使用str.replace

要匹配".\XML files\"这个前缀,需要把字符串中的反斜杠转义(写成\\),或者使用原始字符串(在字符串前加r,避免转义):

# 方式A:原始字符串
df["filename"] = df["filename"].str.replace(r".\XML files\", "", regex=False)

# 方式B:转义反斜杠
df["filename"] = df["filename"].str.replace(".\\XML files\\", "", regex=False)

注意要关闭regex(设为False),避免字符串中的特殊字符被当作正则表达式解析。

3. 用str.split分割路径

按反斜杠分割路径后取最后一段:

# 转义反斜杠
df["filename"] = df["filename"].str.split("\\").str[-1]

# 或者用原始字符串
df["filename"] = df["filename"].str.split(r"\\").str[-1]

你之前方法的问题说明

  • 方法1-3:字符串中的\未转义,而且引号配对错误,导致Python解析字符串时报错。比如".\XML files\"里的最后一个\会转义后面的双引号,导致字符串未闭合,触发EOL while scanning string literal错误。
  • 方法4:只替换了"XML files",剩下的.\\需要额外处理,但直接替换\\后还剩开头的.,如果要补救可以用df["filename"] = df["filename"].str.replace(".\\", "", regex=False),但不如前面的方法直接。

内容的提问来源于stack exchange,提问作者H B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:12:03