见得繁花不惊,修得心淡如水
TextRemove函数和Text.Select函数是两个互为逆操作的函数,前者从文本中删除指定字符,后者从文本中选择指定字符。
模拟以下数据:
中英文、数字混排的产品名称列
提取中文字符
如果要从该列中提取出产品中文名,可以在Power Query中添加自定义列,
输入M代码 = Text.Select([产品名称],{"一".."龟"})
提取英文字符
如果要从该列中提取出产品英文名,可以在Power Query中添加自定义列,
输入M代码 = Text.Select([产品名称],{"a".."z"})
直接提取英文字母会把空格排除在外,因此可以在第二个参数的列表中增加空格。公式修改为:=Text.Select([产品名称],{"a".."z"," "})
提取数字
如果要从该列中提取出产品编号,则可以在Power Query中添加自定义列,
输入M代码 = Text.Select([产品名称],{"0".."9"})
Text.Select函数功能就和它名字所表示的一样。从文本中选出指定字符组成新的文本。它有两个参数,第一个参数是文本,第二个参数是需要选择的字符。
公式中的{"一".."龟"},是用「..」构建所有中文单字的序列列表。
在中文单字中排名第一的字是一,最后一个字是龥。因为龟已经很靠后了,所以{"一".."龟"}可以覆盖我们常用的所有汉字了,因此所有中文字符都会被提取出来,达到了提取中文的目的。
汉字Unicode编码最后一页
用Table.Remove函数完成以上任务虽然艰难一些,但也是可以的,使用该函数的逻辑是删除所有无关信息。
在Power Query中添加自定义列:=Text.Remove([产品名称],{"".."~",":"})
删除其他,仅保留中文字符
{" ".."~"}构造的是包含空格及特殊符号、英文大小写字母及数字的列表,列表不包含中文的冒号,因此需要直接添加到列表中。
我们多次用到了「..」构造连续的有序序列。可以将这些序列汇总成表格,新建查询在公式编辑栏中输入以下公式:
= Table.FromColumns({{"0".."9"},{"a".."z"},{"A".."Z"},{"一".."龟"},{" ".."~"},{"A".."z"}}, {"数字"," 小写字母","大写字母","中文字符","英文字符","大小写字母"})
Table.FromColumns函数的语法可以理解为:Table.FromColumns(列表,标题列表)。它的功能是用多个列表创建一个表,第二个参数指定列标题,可缺省。标题个数需要与第一个参数中列表个数一致,
连续字符列表构造
保存好以后遇到文本提取和删除的问题,对照一下来做,就很简单了。
领取专属 10元无门槛券
私享最新 技术干货