Power Query - 从列表中替换字符串中的多个子字符串

Lan*_*a B 1 powerquery excel-2016

我有一个包含类似短语的专栏,我需要从chars中清除,如:;!通过用空格替换它们(以避免连接单词).

输入和输出示例:

"bla.blabla X&!:blablabla" 需要成为 "bla blabla X blablabla"

我找不到一个简单的简单解决方案!

source = data,  //which has Oldcol column with data to clean
CharsToRemove = { ".", "'", ":", ";", "!", "?", "<", ">", "{", "}", "[", "]", "'", "`", "^", """", "&", "-","/", "\", "|","(", ")", "," , "=", "+"}, 
//line below is where I'd like to get to, it is not working
Newcol = Table.AddColumn(source , "NEWCOL", each 
             Text.Replace([Oldcol], CharsToRemove , " ") ) 
Run Code Online (Sandbox Code Playgroud)

基本上,我正在寻找最后一条工作线.

嵌套替换语句的选项有效,但它很笨,因为要替换的字符的实际列表很长,并且它发生在代码的许多部分.我可以把它变成这个功能,但我想知道是否有办法避免这一切,只是有一个聪明的线条来完成这项工作?

先感谢您

Mar*_*eug 6

对于多个文本替换,您可以使用List.Accumulate,例如

let
    CharsToRemove = Text.ToList(".':;!?<>{}[]'`^""&-/\|(),=+"),
    Source = #table({"Oldcol"},{{"bla.blabla X&!:blablabla"}}),
    Cleaned = Table.TransformColumns(Source,{{"Oldcol", each List.Accumulate(CharsToRemove,_,(String,Remove) => Text.Replace(String,Remove," "))}})
in
    Cleaned
Run Code Online (Sandbox Code Playgroud)