Power Query - 从列表中替换字符串中的多个子字符串
Power Query - replace multiple substrings in a string from a list
我有一列包含像这样的短语,我需要从像 ;,:! 这样的字符中清除它们等等,用 space 替换它们(以避免单词连接)。
输入和输出示例:
"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 , " ") )
基本上,我正在寻找最后一行工作。
嵌套替换语句的选项有效,但它很笨重,因为要替换的实际字符列表很长,而且它出现在代码的许多部分。
我可以把它变成函数,但我很想知道是否有办法避免这一切,并且只需要一个智能线路就可以完成这项工作?
提前致谢
对于多个文本替换,您可以使用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
对于多列,您可以使用Table.ReplaceValue。
let
CharsToRemove = Text.ToList(".':;!?<>{}[]'`^""&-/\|(),=+"),
Source = #table({"Oldcol1", "Oldcol2"},{{"bla.blabla X&!:blablabla","bla.blabla X&!:blablabla"}}),
Cleaned = List.Accumulate(CharsToRemove,Source,(Table,Remove) => Table.ReplaceValue(Table,Remove," ",Replacer.ReplaceText,{"Oldcol1","Oldcol2"}))
in
Cleaned
我有一列包含像这样的短语,我需要从像 ;,:! 这样的字符中清除它们等等,用 space 替换它们(以避免单词连接)。
输入和输出示例:
"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 , " ") )
基本上,我正在寻找最后一行工作。
嵌套替换语句的选项有效,但它很笨重,因为要替换的实际字符列表很长,而且它出现在代码的许多部分。 我可以把它变成函数,但我很想知道是否有办法避免这一切,并且只需要一个智能线路就可以完成这项工作?
提前致谢
对于多个文本替换,您可以使用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
对于多列,您可以使用Table.ReplaceValue。
let
CharsToRemove = Text.ToList(".':;!?<>{}[]'`^""&-/\|(),=+"),
Source = #table({"Oldcol1", "Oldcol2"},{{"bla.blabla X&!:blablabla","bla.blabla X&!:blablabla"}}),
Cleaned = List.Accumulate(CharsToRemove,Source,(Table,Remove) => Table.ReplaceValue(Table,Remove," ",Replacer.ReplaceText,{"Oldcol1","Oldcol2"}))
in
Cleaned