PowerBI/Power Query:按分隔符列表拆分列提取短文件名
批量去除多扩展名提取短文件名(Power Query/M)
核心思路
从文件名末尾开始匹配预定义的扩展名列表,循环去除所有符合的后缀,直到剩余部分不再以列表中的扩展名结尾,以此保留短文件名本身包含的点。
具体实现步骤
- 加载数据:将包含文件名的表格导入Power Query编辑器。
- 定义扩展名列表:新建空白查询,输入以下代码自定义需要匹配的扩展名(按需增减),将查询命名为
ExtensionList:
let Extensions = {".ipt", ".dwg", ".docx", ".xlsx"} // 替换为你的目标扩展名 in Extensions
- 添加自定义列处理文件名:返回原数据查询,添加自定义列,输入以下M代码(注意替换
[文件名]为你实际的列名):
let CurrentName = [文件名], RemoveExtensions = (name as text, exts as list) as text => let EndsWithExt = List.AnyTrue(List.Transform(exts, (ext) => Text.EndsWith(name, ext))), NewName = if EndsWithExt then let MatchedExt = List.First(List.Select(exts, (ext) => Text.EndsWith(name, ext))), TrimmedName = Text.RemoveRange(name, Text.Length(name) - Text.Length(MatchedExt), Text.Length(MatchedExt)) in RemoveExtensions(TrimmedName, exts) else name in RemoveExtensions(CurrentName, ExtensionList) in RemoveExtensions
- 验证结果:关闭并上载数据,即可得到去除所有目标扩展名的短文件名(例如
1.5 in screw.ipt.dwg会被处理为1.5 in screw)。
补充说明
- 扩展名列表必须包含带点的完整后缀(如
.dwg而非dwg),保证匹配精准。 - 递归逻辑会自动处理多层后缀(如
.a.b.c格式的后缀会被完全去除)。 - 若短文件名本身与扩展名列表项重复,也不会误删,因为仅从末尾匹配去除。
内容的提问来源于stack exchange,提问作者nichyc
相关产品推荐
相关产品推荐

