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

如何在Power Query中使用多动态分隔符拆分CSV数据?

解决CSV动态多分隔符拆分问题

原始CSV数据

\asdhf\revi\Tim2,AK\AK_ADMPH,Allow,Fix
\asdfs1\revi\Tim, John,BUILTIN\Administrators,Allow,None

需求说明

  • 先以,BUILTIN和,AK作为分隔符拆分每条记录,分离出路径段和权限相关段
  • 再对拆分后的各段用普通逗号,做二次拆分,得到结构化结果

Python 代码实现

用正则表达式匹配动态分隔符,拆分后再处理二次拆分:

import re

# 原始数据行
data = [
    r"\asdhf\revi\Tim2,AK\AK_ADMPH,Allow,Fix",
    r"\asdfs1\revi\Tim, John,BUILTIN\Administrators,Allow,None"
]

# 正则匹配`,AK`或`,BUILTIN`,并保留分隔符
split_re = re.compile(r"(,AK|,BUILTIN)")

for line in data:
    segments = split_re.split(line)
    # 提取路径部分
    path = segments[0].strip()
    # 拼接权限完整段(分隔符+后续内容)
    permission_segment = "".join(segments[1:])
    # 拆分权限段
    permission_parts = [p.strip() for p in permission_segment.split(",") if p]
    # 组合最终结果
    final = [path] + permission_parts
    print(final)

运行结果

  • 第一行输出:['\\asdhf\\revi\\Tim2', 'AK\\AK_ADMPH', 'Allow', 'Fix']
  • 第二行输出:['\\asdfs1\\revi\\Tim, John', 'BUILTIN\\Administrators', 'Allow', 'None']

Excel 公式实现(适用于365/2021版本)

假设数据在A1单元格:

  1. 提取路径部分:
    =LEFT(A1, MIN(IFERROR(FIND(",AK",A1),999), IFERROR(FIND(",BUILTIN",A1),999))-1)
    
  2. 提取并拆分权限部分:
    =TEXTSPLIT(RIGHT(A1, LEN(A1)-MIN(IFERROR(FIND(",AK",A1),999), IFERROR(FIND(",BUILTIN",A1),999))+1), ",")
    

将两个公式结合,就能得到拆分后的完整结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:45:35