Python编程快速上手-让繁琐的工作自动化(电话和E-mail地址提取程序)
假设你有一个无聊的任务,要在一篇长的网页或文本中找出所有的电话号码和E-MAIL地址。如果手动去翻页可能花费很长的时间。如果有一个程序可以在剪贴板中查找电话号码和e-mail地址,那么你只要按一下CTRL+A选择所有文本,再按下CTRL+C将它复制的剪贴板,然后运行你的程序,它就会用找到的电话号码和E-MAIL地址替换剪贴板。
当你开始一个新项目的时候,很容易想要直接写代码。但更多时候最好后退一步,考虑更大的图景。建议草拟高层的计划,弄清楚程序需要做什么,暂时不要考虑代码如何实现。先关注大框架。
1. 程序思路
我们的程序需要完成以下任务:
1. 从剪贴板取得文本;
2. 找出文本中所有的电话号码和E-mail地址;
3. 将它们粘贴到剪贴板;
现在开始考虑如何实现代码:
1. 使用pyperclip模块复制和粘贴字符串;
2. 创建正则表达式,匹配电话号码和E-mail地址;
3. 将匹配到的字符串整理好格式,用于粘贴的剪贴板;
4. 如果没找到,显示相应的提示信息;
上面的思路就相当于有了项目的路线图,在编码时可以独立关注其中的某一步。
2. 程序实现
1. 为电话号码创建一个正则表达式
电话号码正则表达式
2. 为E-mail地址创建一个正则表达式
email地址正则表达式
3. 从剪贴板文本中查找所有的匹配
既然已经有了电话号码和E-mail地址的正则表达式,就可以让Python的re模块去干幸苦的事情了-查找剪贴板中的电话号码和E-mail地址。
从剪贴板的文本匹配
4. 所有匹配连接成一个字符串,复制到剪贴板
将结果复制到剪切板
5. 类似程序的构想
识别文本的模式(并且可能用sub()方法替换它们)有许多不同潜在的应用。
寻找网站的url;
整理不同的日期格式,用统一的标准格式替换;
删除敏感信息,例如身份证号码和银行卡号等等;
3. 小结
Python提供的re模块可以让我们编译Regex对象。该对象有几种方法,search()findall()sub()。我们已经学习了如何匹配和操纵字符串,接下来学习如何在计算机硬盘上读写文件。