T-SQL如何多次提取分隔符间的字符串并插入到新列中
这个需求完全可以实现,不受文件夹名称长度、路径层级影响,核心逻辑是将路径按分隔符\拆分为独立片段后,按需拼接前N段即可,以下是不同常用工具的实现方案:
Excel 公式实现
假设你的FolderPath数据存放在A列,从A2行开始,对应新列公式如下:
- RootDirectory(取前2段路径):
适配Excel 365/2021及以上版本:=TEXTJOIN("\",TRUE,INDEX(TEXTSPLIT(A2,"\"),,{1,2}))
适配Excel低版本:=LEFT(A2,FIND("\",A2,FIND("\",A2)+1)-1) - SubDirectory(取前3段路径):
高版本:=TEXTJOIN("\",TRUE,INDEX(TEXTSPLIT(A2,"\"),,{1,2,3}))
低版本:=LEFT(A2,FIND("\",A2,FIND("\",A2,FIND("\",A2)+1)+1)-1) - SubSubDirectory(取前4段路径):
高版本:=TEXTJOIN("\",TRUE,INDEX(TEXTSPLIT(A2,"\"),,{1,2,3,4}))
低版本可嵌套FIND函数查找对应分隔符位置后截取。
Power Query 实现
适合批量处理大量数据,步骤更简洁不易出错:
- 将数据表导入Power Query编辑器,选中
FolderPath列 - 依次添加自定义列:
RootDirectory:Text.Combine(List.FirstN(Text.Split([FolderPath],"\"),2),"\")
SubDirectory:Text.Combine(List.FirstN(Text.Split([FolderPath],"\"),3),"\")
SubSubDirectory:Text.Combine(List.FirstN(Text.Split([FolderPath],"\"),4),"\") - 调整列顺序后导出到Excel表格即可,需要提取更多层级时仅需修改
List.FirstN的第二个参数即可。
Python Pandas 实现
适合处理十万行以上的大规模数据集:
import pandas as pd # 读取你的数据,此处以读取Excel为例 df = pd.read_excel("你的文件路径.xlsx") # 按反斜杠拆分路径,过滤掉路径末尾反斜杠产生的空值 df['path_parts'] = df['FolderPath'].str.split(r'\\').apply(lambda x: [i for i in x if i]) # 按需拼接对应层级的路径片段 df['RootDirectory'] = df['path_parts'].apply(lambda x: '\\'.join(x[:2])) df['SubDirectory'] = df['path_parts'].apply(lambda x: '\\'.join(x[:3])) df['SubSubDirectory'] = df['path_parts'].apply(lambda x: '\\'.join(x[:4])) # 删除临时拆分列,输出结果 df = df.drop('path_parts', axis=1) df.to_excel("结果文件.xlsx", index=False)
内容的提问来源于stack exchange,提问作者Adam Craven
相关产品推荐
相关产品推荐

