PowerQuery处理特殊空格

所谓特殊空格,是指在PowerQuery中,那些无法用替换值功能替换的空格。这类空格很讨嫌,但是往往这类空格具有特殊意义——比如,决定缩进。

虽然没法用替换的方式将这类空格替换成别的值,但是可以用修整(trim)命令来一次性删除所有这类空格,只保留需要的文本。

但是当这些空格代表层级的时候,不能简单清除它们,而必须将它们转化成某种层级形式。

仔细研究这些空格,发现其长度决定了层级的层次,所以,我们只需要获取这些空格的长度,就可以映射出层级来。

示例代码如下:

let

源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],

更改的类型 = Table.TransformColumnTypes(源,{{"序号", Int64.Type}, {"名称", type text}, {"编码", type text}}),

含空格的字符串长度 = Table.AddColumn(更改的类型, "含空格的字符段长度", each Text.Length([名称])),

更改的类型2 = Table.TransformColumnTypes(含空格的字符串长度,{{"含空格的字符段长度", Int64.Type}}),

复制的列 = Table.DuplicateColumn(更改的类型2, "名称", "名称 - 复制"),

纯文本 = Table.TransformColumns(复制的列,{{"名称 - 复制", Text.Trim}}),

纯文本长度 = Table.AddColumn(纯文本, "纯文本长度", each Text.Length([#"名称 - 复制"])),

已添加自定义 = Table.AddColumn(纯文本长度, "空格长度", each [含空格的字符段长度]-[纯文本长度]),

重排序的列 = Table.ReorderColumns(已添加自定义,{"序号", "名称", "编码", "名称 - 复制", "含空格的字符段长度", "纯文本长度", "空格长度"})

in

重排序的列

最后结果如下:


图1

可以看到,“空格长度”其实就是层级映射列:0表示最顶层,2表示次一层,4表示再次一层,以此类推。我们甚至可以用空格长度/2+1来获取每一行所在的层级,以及通过获取“空格长度”列的最大值来获取总共有多少层级,有这些信息之后,就可以很方便地重建原始数据中空格表示的层级了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,229评论 4 61
  • 在挖掘分析的过程当中对字符串的处理是极为重要的,且出现也较为频繁,R语言作为当前最为流行的开源数据分析和可视化平台...
    果果哥哥BBQ阅读 5,910评论 0 8
  • 《美的历程》断断续续地历时一周,总算是把李泽厚先生的《美的历程》给读完了。其中最大的感受便是,这是一部极其恢宏的大...
    福建省地术拳协会阅读 255评论 0 0
  • 几天前开始计划,在小咖秀给他录个生日快乐的小视频,转发一首 你的生日 并附上类似表白的话语,哦!还要打一颗爱心,还...
    Li小小二阅读 251评论 1 0
  • 1921年5月5号香奈儿5号诞生,1977年出生的我结缘香水,打造金泓霖香水品牌,在许多眼中,这只是个幻想,遥不可...
    香水佬阅读 1,156评论 1 1