数据之间的空格数量不一样,怎么统一处理或分列?

2021-08-30 15:24:56 浏览数 (3)

小勤:这样的数据怎么分列啊?数据间的空格有的多有的少,好烦啊!

你看,如果直接分列的话,就出现很多空的内容占到多个列里面去了。

大海:这种情况就不能直接用分隔符分列实现了。但实现起来也不复杂。我们先按分隔符拆分列到行:

这个时候,我们可以看到拆分步骤生成的代码如下,而其中自动添加了将拆分后的结果扩展到行的操作,即Table.ExpandListColumn函数,这里我们不直接扩展到行,所以只保留其中蓝底部分内容:

其中, let ... in ...部分参数是数据类型相关处理内容,我们可以直接删掉,如下蓝色背景部分:

删掉后,步骤代码如下,每行里的结果为一个通过函数Splitter.SplitTextByDelimiter基于空拆分而成的List,也就是说,我们可以通过修改这个参数,得到自己想要的结果。

因此,我们修改这个参数为一个自定义函数,将原内容按空格拆分(Text.Split)后去掉多余的空格(List.Select),然后再用空格合并(Text.Combine)起来:

(x)=>Text.Combine(

List.Select(

Text.Split(x," "),

each _<>" "

),

" "

)

这样,我们就得到了一个内容之间只有一个空格的统一的情况,后续想继续拆分或做其他处理都会比较方便了。如下图所示:

小勤:这样归一化处理的确可以方便后面进行列的拆分,但是,后面如果直接拆分的话,动态性还不是很好啊,因为拆分列的功能里面会生成固定的列名。

大海:的确这样,所以,如果用这种方法,后面再拆分列的时候需要进一步处理动态列名的问题。可以参考文章《PQ-M及函数:为什么加了新的内容,拆分列不对了?》。不过,回到这个问题上其实还有其他办法来实现,我们后面再讲。

小勤:好。

0 人点赞