Python按下划线分割文件名:提取前缀的非正则实现需求
提取文件名前缀的非正则解决方案
针对你需要从类似Planning_Group_20180108.ind或Soldto_20180108的文件名里提取前缀的需求,我整理了一套不用正则表达式的简单方法,没接触过正则的朋友也能轻松上手:
核心思路
观察文件名规律就能发现:前缀和8位日期数字之间用下划线分隔,且日期是文件名去掉扩展名后的最后一段内容。所以我们只需要找到最后一个下划线的位置,截取它之前的内容即可。
具体步骤(以Python为例)
- 第一步:去掉文件的扩展名(如果有)。比如把
Planning_Group_20180108.ind处理成Planning_Group_20180108 - 第二步:定位最后一个下划线的位置
- 第三步:从文件名开头截取到该位置的内容,就是我们要的目标前缀
代码示例
def extract_prefix(filename): # 从右往左找第一个".",分割一次以去掉扩展名 name_without_ext = filename.rsplit(".", 1)[0] # 从右往左找第一个下划线的索引位置 last_underscore_pos = name_without_ext.rfind("_") # 截取前缀内容 prefix = name_without_ext[:last_underscore_pos] return prefix # 测试案例 print(extract_prefix("Planning_Group_20180108.ind")) # 输出: Planning_Group print(extract_prefix("Soldto_20180108")) # 输出: Soldto
方法优势说明
rsplit(".", 1)能适配文件名里包含多个点的情况(比如abc.def_20231234.txt),确保只去掉最后一个扩展名rfind("_")不管前缀里有多少个下划线,都能精准定位到日期前的分隔符,完美覆盖两种文件名格式的需求
内容的提问来源于stack exchange,提问作者user7422128
相关产品推荐
相关产品推荐

