kettle开发-Day41-数据清洗之字符串替换

前言:

        昨天讲到了通过case/switch组件来进行分流,来区分日期里面三大类的数据,包括正常显示的2023/7/12 2:59:58的数据,一种是包含中文上午的数据,一种是包含中文下午的数据。但是我们发现这样直接存进去的数据还是包含了很多带有਍和汉字上午、下午和年份不完整只有23这种异常数据。很显然这些异常数据会导致我们数据分析的时无法处理。因此我们必须对这些异常数据进行清洗让其恢复正常。

 一、字符串替换

        1、功能简介

        如上图所示,字符串替换可以将字符串A变成字符串B,因此我们可以通过字符串替换的功能可以清除类似包含"਍"的数据等等

        2、小案例

        字符串替换的时候如果我们是简单的讲A替换为B的话,我们只要选择需要替换的输入流字段,不使用正则表达式,搜索里面输入A,使用...替换,输入B即可,设置为空串为否等如下图所示即可。

                 原始的字符串

替换后的结果

        如上图所示,我们成功将字符串 ABaaABb→BBBBBBb,因为我们选了大小写不敏感,因为a也会被替换,因此我们需要根据自己的需要来选择对应的替换数据范围。

二、特殊应用

        前面讲到我们需要处理特殊字符汉字等,因此我们需要用到正则表达式

        2.1正则表达式

        

         如上图所示我们通过正则表达式਍+来匹配包含਍的数据,因此字符串任何位置਍,都会被空值替换掉。类似中文上午 和 下午 我们就可以用正则表达式上午 +   下午 +来匹配对应的字符串然后进行替换。最后的设置效果如下图所示。

         2.2特殊处理

        在前面我们有说到,我们字符串中的年份不完整,如2023显示的是23因此我们需要将23转换成2023。在这里需要注意的是,我们的小时、分钟、秒都可能出现23因此,在处理23年份的时候,我们需要使用^23来处理,表示只替换23开头的23为2023,因此就不会将小时、分钟、秒也替换为2023了。对应效果如下图所示。

        23年份的问题得到了处理,我们还需要类似23.07.14替换为2023/07/14,因此我们此时需要将". "替换为"/"。在这里需要注意的是,我们不能直接.或者/,因为对应都是关键字,我们需要用\.\/来完成对应的字符串的替换工作。最终效果如下图所示。

 三、总结

        在应用字符串替换来进行数据清洗时,我们可以用正则表达式来模糊匹配,但是需要注意模糊匹配会不会造成将其他不应该替换的数据被替换了。如替换年份时,将小时、分钟、秒也被替换了。

        还有就是当我们发现替换后的字符串不按我们预想的效果来就需要考虑是不是我们用到了关键字,因此我们需要用\关键字来完成对应替换规则。愿好~

猜你喜欢

转载自blog.csdn.net/qq_29061315/article/details/131718390
今日推荐