Power Query中如何找到第一个中文字符并进行分割提取?

2020-03-24 15:36:10 浏览数 (1)

原数据:

整理后数据:

以上是一份视频文件名称,通过PQ对文件夹内的名称进行导入后得到的。由3部分组成:集数 文件名 文件格式。我们需要分别把其拆分成3个列,我们看下如何操作。

(一) 首先我们先分析文件名的规律。

1. 文件格式的分割。

文件格式相对比较好容易拆分,只需要根据小数点的符号进行拆分即可。

2. 提取在数字格式和小数点之间的文件名

但是集数和文件名的提取相对比较麻烦。若是通过空格来进行拆分,我们看 222-234人鱼又再度悲泣(事件篇)(疑惑篇)(解决篇).RM这个文本没有存在空格,所以如果按空格拆分就会出现如下问题,这个不是我们需要的。

(二) 根据非中文字符和中文字符的条件进行分割。

确定非中文字和中文字的位置。确定文本中指定位置的函数我们知道有以下几个。 Text.PositionOf,Text.PositionOfAny,List.PositionOf,List.PositionOfAny。有了第一个中文字符所在的位置,那提取就很容易了,只需要使用Text.Range进行提取即可。 因为我们这里是需要查找所有的中文字符,有几种处理思路。

1. 通过Text.PositionOf List.Transform List.Select List.Min方式。

解释:

代码语言:javascript复制
List.Min(
        List.Select(
           List.Transform({"一".."龟"},  //查找全部中文字符
                 (a)=> Text.PositionOf([Name],a)  //找到对应中文字符所在的文本位置,未找到的为-1
                          ),
                          each _ <>-1   //提取全部中文位置的位置
                    )
        )   //提取第一个中文所在位置

2. 通过Text.PositionOfAny方式

解释:

代码语言:javascript复制
Text.PositionOfAny([Name],{"一".."龟"})  //查找第一个中文所在的位置

我们可以根据以上的案例,可以自定义一个函数,以后就可以方便提取。

请点个赞,转发分享给更多的人。

0 人点赞