工作十五年大神的文本处理经验技巧(有关工作中文本处理的事儿这一篇就够了!)

        本文给那些初入职场或已在职场,但喜好勤奋的重复的人。工作中我们难免遇到大量的文本处理工作,比如要批量的编辑一些表格数据,有一些半特征或半结构化的文本txt数据需要录入到excel或者导入到数据库中去处理。有时候word里要生成大量的统计表格或者标签。又比如有些文件是多行的,需要根据某种规律,调整成多条单行数据。

         今天我们就来说说这些事儿。首先要做这些事儿之前,我们需要有所准备。所谓裕兴其事必先利器!最常用的文本加工工具有哪些呢?windows记事本大家肯定是都有了,但是功能太弱,并且最致命的弱点是,它不具备分段加载文本的能力,如果你的文本有2GB甚至更大,通常用windows记事本打开就是一场噩梦。好用又便捷的文本编辑器有哪些呢?针对windows环境下工作的伙伴们,下面几个工具是首选。

          1、UltraEdit 个头比较大,但是功能强大。是最好用的文本编辑处理工具。如果你的工作中,时长会要处理大规模文本,该工具是首选。

          2、Notepad++ 个头小巧,启动速度比UE快,适合处理中小大小的文件,性能不错。另外对非软件开发从业人员,有一些字符串上的优化,使用起来会比较轻便。但是如果要进行文本对比和十六进制查看需要额外装插件。

           首选的文本处理工具就是这两个。如果要进行数据加工,建议excel也是要必备的。

         工具有了,接下来为了高效的处理文本,快速的完成日常工作中我们遇到的各种文本处理要求,要额外学习什么呢?答案是学习正则表达式和正则的思维模式。正则化处理文本,是日常生活工作中我们最常遇到,但往往如果不懂得这些处理技术,就会选择复制粘贴,复制粘贴,各种人工操作,本来5分钟就可以轻松解决的问题,愣是勤奋的忙乎2-3天,然后领导不满意,自己还累成狗,并且结果可能还因为人工操作次数太多,而暗含各种疏忽和错误,不敢承诺自己处理的文件没问题。

          为什么正则表达式这么重要呢?因为任何文本的编辑,本质上重复性的操作都可以用批量替换操作来快速达到目的。如果是结构化数据,要给所有行都增加一列,那么UE和Notepad++的列块编辑模式又能发挥奇效。列块编辑解决的是批量的大量文本同一化的处理。

           而通过替换则可以达到更多目的,替换可以调整文本的排布和结果,也可以调整文本的特定内容。而如果替换配合正则表达式,则99%的重复性工作都可以用正则表达式+替换来实现。

          所以不管你是否是IT从业,只要你是办公一族,面对电脑进行办公,那么我接下来说的技巧,一定会大幅度提高您的工作效率。

          看几个正则表达式的例子:

一、常用通配符替换。

1)删除空行: 替换 %[ ^t]++^p 为 空串

替换前

替换后

2)删除行首空格: 替换 %[ ^t]+ 为 空串

替换前

替换后

3)删除文本中指定的前2列字符: 替换 %?? 为 空串

替换前

替换后

4)在第4列后插入2列空白字符: 替换 %^(????^)^(?^) 为 "^1 ^2"

替换前

替换后

5)查找替换所有的数字: [0-9]+[.]++[0-9]+

替换前

替换后

6)查找所有的单词: [a-z]+

替换前

替换后

7)查找所有的网址: http://[a-z0-9^~`_./^-^?=&]+

8)将导出的格式化好的sql语句,调整成单行sql:

替换前

第一步替换,替换掉全部换行把所有语句合到1行:

   第二步替换,把;号替换为;号换行,目标达成!:

  9)列块编辑:

   

选中列块模式,并选取所有行的末尾封号之前,随便敲点儿什么,一次编辑多行:

随便敲点什么:

10)其它一些正则小技巧(UltraEdit的):

%1 搜索以1开头的行

1$ 搜索以1为结尾的行

? 匹配单字符

* 匹配多字符

Te+st 匹配"test", "teest", "teeeest" 等. 但不匹配 "tst".

te++st 匹配"test", "teest", "teeeest","tst" 等. 但不匹配 .

^p 新行 (DOS Files格式)

^r 新行 (MAC Files格式)

^n 新行 (UNIX Files格式)

^t tab键

[1-9] 匹配1-9的数字

[linux] 匹配linux中任何一个单词

[~0-9] 除数字外任何一个词

"^{John^}^{Tom^}" 搜索john和tom 如john sdfasdf tom被选种,当然不包括sdfasdf,其中^{和^}是分割符

        今天就写这么多,正则表达式的逻辑和思想是统一的,但不同的开发语言和工具会有一点点差异。比如UE有自己定义的正则表达式语法,同时也支持unix正则表达式和c++正则表达式。而notepad++则有自己的一些特殊定义字符,另外额外支持unix正则表达式。一般用户只需要学一种ue的或者unix的正则表达式即可。而如果是IT从业,最好是掌握C++、java、unix、UE的正则式都掌握,因为毕竟理念都一样只是一些功能字符的定义有差异。比如UE的正则表达式转义字符是^,而unix等其它的正则表达式多数转义字符都是\。正则表达式比较难理解的是侵占,元组规则。其它的都很容易理解。

       希望这篇文章,能够帮助你在工作中提高文本的处理能力和效率。做到事半功倍的效果。总之如果你发现文本需要大量的重复性的操作、复制粘贴,不妨先百度一下,看看能不能通过拆解成列块编辑和替换来达到目的。甚至有时候可以在文本编辑器里处理成多列,保存成csv,然后用excel再进行编辑,之后将最终结果从excel里复制出来,粘贴到文本,再替换掉列分割符或者制表符从而大量生成文本数据,或者编辑文本数据的目的。

        把时间和精力,用在勤奋上。把勤奋用在如何提高共做效率和工作能力上,而不要浪费在不断的重复性劳动上。有些人看似很辛苦,但是愚蠢的勤奋,宁可复制粘贴一千遍,也不百度学习一下更好的更高效的方式!!

猜你喜欢

转载自blog.csdn.net/supperman_009/article/details/109095099