Power Query - 循环提取分隔符之间的文本
Posted
技术标签:
【中文标题】Power Query - 循环提取分隔符之间的文本【英文标题】:Power Query - Loop to extract text between delimiters 【发布时间】:2021-05-14 18:16:34 【问题描述】:我正在尝试为所有可用匹配项提取分隔符之间的文本。输入列和所需输出如下所示:
Index | Country (input) | Country (desired output) |
---|---|---|
0 | 1, USA; 2, France; 3, Germany; | USA, France, Germany |
1 | 4, Spain; | Spain |
2 | 1, USA; 5, Italy; | USA, Italy |
我尝试通过使用", "
和";"
作为分隔符来使用“提取”和“拆分列”功能,但它没有按预期工作。我也尝试过使用Text.BetweenDelimiters
和Splitter.SplitTextByEachDelimiter
,但我找不到解决方案。
我想在 Power Query 中编写一个循环,以递归方式提取此数据,直到将所有国家/地区提取到每一行的新列。
有什么想法吗?提前致谢!
【问题讨论】:
【参考方案1】:似乎您正在做的是拆分分号,然后拆分逗号,然后合并结果。所以让我们这样做
右键单击列并拆分分号,每次出现的分隔符,高级选项行
右键单击新列并以逗号分隔,每次出现的分隔符,高级选项列
右键点击索引和分组
在公式栏或 home..advanced 编辑器中编辑分组公式...以替换它作为默认值并以此结束,它使用 , 分隔符组合所有行
, each Text.Combine([ColumnNameGoesHere]," "), type text)
示例代码:
let Source = Excel.CurrentWorkbook()[Name="Table1"][Content],
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(Source, "Country (input)", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv)), "Country (input)"),
#"Split Column by Delimiter1" = Table.SplitColumn(#"Split Column by Delimiter", "Country (input)", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), "Country (input).1", "Country (input).2"),
#"Grouped Rows" = Table.Group(#"Split Column by Delimiter1", "Index", "Country (desired output)", each Text.Combine([#"Country (input).2"],", "), type text)
in #"Grouped Rows"
~ ~ ~
我假设这是简化的数据,否则只需一步删除所有数字和分号会更简单
let Source = Excel.CurrentWorkbook()[Name="Table1"][Content],
#"Text" = Table.TransformColumns(Source,"Country (input)", each Text.RemoveRange(Text.Remove(_, "1","2","3","4","5","6","7","8","9","0",";"),0), type text)
in #"Text"
【讨论】:
以上是关于Power Query - 循环提取分隔符之间的文本的主要内容,如果未能解决你的问题,请参考以下文章