如何将<::>封装的单列分隔值拆分到多个独立列
常规解法汇总
Excel / Power Query 操作步骤
- 选中目标数据列,点击「数据」选项卡 - 「从表格/区域」导入Power Query编辑器
- 选中导入后的列,依次点击「转换」-「提取」-「分隔符之间的文本」,输入起始分隔符为
<:,结束分隔符为:>,扫描类型选择「出现的所有段」,确认后会自动拆分出所有被封装的内容片段 - 按需重命名拆分后的列,导出到工作表即可
Python Pandas 代码实现
如果使用Pandas处理数据,直接用正则提取匹配内容即可:
import pandas as pd # raw_col 替换为你的原始数据列名 df[["Col1", "Col2", "Col3"]] = df["raw_col"].str.extractall(r"<:(.*?):>").unstack()
如果每行封装的片段数量不固定,可以用split拆分后过滤空值:
split_df = df["raw_col"].str.split(r"<:|:\>", expand=True).drop(0, axis=1) # 自动生成的列按片段顺序编号,可按需重命名
MySQL 8.0+ 语句实现
用REGEXP_SUBSTR函数按位置提取对应片段:
SELECT REGEXP_SUBSTR(目标列名, '<:(.*?):>', 1, 1, NULL, 1) AS Col1, REGEXP_SUBSTR(目标列名, '<:(.*?):>', 1, 2, NULL, 1) AS Col2, REGEXP_SUBSTR(目标列名, '<:(.*?):>', 1, 3, NULL, 1) AS Col3 FROM 表名;
内容的提问来源于stack exchange,提问作者Volker
相关产品推荐
相关产品推荐

