首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

文本处理必须学会的两个M函数

见得繁花不惊,修得心淡如水

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(列表,标题列表)。它的功能是用多个列表创建一个表,第二个参数指定列标题,可缺省。标题个数需要与第一个参数中列表个数一致,

连续字符列表构造

保存好以后遇到文本提取和删除的问题,对照一下来做,就很简单了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230415A01IDY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券