python知识:正则表达式快速入门案例:提取文章中所有的单词、提取文章中所有的数字、提取百度热搜的标题、提取ip地址
什么是正则表达式?
正则表达式是用一定的规则匹配字符串内容。
快速入门示例
import re # regular expression正则表达式(python的内置正则表达式)# 通过爬虫技术获取网页中的数据
def send_request1(key):content = """自20世纪90年代初Python语言诞生至今,它已被逐渐广泛应用于系统管理任务的处理和Web编程。1995年,Guido van Rossum在弗吉尼亚州的国家创新研究公司(CNRI)继续他在Python上的工作,并在那里发布了该软件的多个版本。 [1]2000年五月,Guido van Rossum和Python核心开发团队转到BeOpen.com并组建了BeOpen PythonLabs团队。同年十月,BeOpen PythonLabs团队转到Digital Creations(现为Zope Corporation)。[1]2001年,Python软件基金会(PSF)成立,这是一个专为拥有Python相关知识产权而创建的非营利组织。Zope Corporation是PSF的赞助成员。[1]04:04python笔记1-什么是pythonPython的创始人为荷兰人吉多·范罗苏姆(Guido van Rossum)。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中单词Python(意为大蟒蛇)作为该编程语言的名字,是因为英国20世纪70年代首播的电视喜剧《蒙提·派森的飞行马戏团》(Monty Python's Flying Circus)。"""return contentdef send_request2(key):content = """<a target="_blank" title="铭记光荣历史展望美好未来" href="/s?wd=%E9%93%AD%E8%AE%B0%E5%85%89%E8%8D%A3%E5%8E%86%E5%8F%B2%E5%B1%95%E6%9C%9B%E7%BE%8E%E5%A5%BD%E6%9C%AA%E6%9D%A5&usm=3&ie=utf-8&rsv_pq=c86c3047001173dd&oq=python&rsv_t=ba18RhmAZEPN3AhMlLhvbMVhT8bUTG358FYHVG%2FfScwTPsbKy%2FybeEbdNXk&rqid=c86c3047001173dd&rsf=6891a5dd0f89410b36452a49d428d239_1_15_1&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811" class="c-font-medium c-color-t opr-toplist1-subtitle_1uZgw" data-click="{"clk_info":"{\"index\":1,\"page\":1,\"city\":\"\",\"type\":\"hot_fyb\"}","area":"RIGHT"}">铭记光荣历史展望美好未来<!--14--></a><a target="_blank" title="央视曝白家电诈园区虐待手段:极残酷" href="/s?wd=%E5%A4%AE%E8%A7%86%E6%9B%9D%E7%99%BD%E5%AE%B6%E7%94%B5%E8%AF%88%E5%9B%AD%E5%8C%BA%E8%99%90%E5%BE%85%E6%89%8B%E6%AE%B5%EF%BC%9A%E6%9E%81%E6%AE%8B%E9%85%B7&usm=3&ie=utf-8&rsv_pq=c86c3047001173dd&oq=python&rsv_t=ba18RhmAZEPN3AhMlLhvbMVhT8bUTG358FYHVG%2FfScwTPsbKy%2FybeEbdNXk&rqid=c86c3047001173dd&rsf=6891a5dd0f89410b36452a49d428d239_1_15_2&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811" class="c-font-medium c-color-t opr-toplist1-subtitle_1uZgw" data-click="{"clk_info":"{\"index\":2,\"page\":1,\"city\":\"\",\"type\":\"hot_fyb\"}","area":"RIGHT"}">央视曝白家电诈园区虐待手段:极残酷<!--17--></a><a target="_blank" title="饭店老板随手拍菜品被罚45万" href="/s?wd=%E9%A5%AD%E5%BA%97%E8%80%81%E6%9D%BF%E9%9A%8F%E6%89%8B%E6%8B%8D%E8%8F%9C%E5%93%81%E8%A2%AB%E7%BD%9A45%E4%B8%87&usm=3&ie=utf-8&rsv_pq=c86c3047001173dd&oq=python&rsv_t=ba18RhmAZEPN3AhMlLhvbMVhT8bUTG358FYHVG%2FfScwTPsbKy%2FybeEbdNXk&rqid=c86c3047001173dd&rsf=6891a5dd0f89410b36452a49d428d239_1_15_3&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811" class="c-font-medium c-color-t opr-toplist1-subtitle_1uZgw" data-click="{"clk_info":"{\"index\":3,\"page\":1,\"city\":\"\",\"type\":\"hot_fyb\"}","area":"RIGHT"}">饭店老板随手拍菜品被罚45万<!--20--></a><a target="_blank" title="怎样看懂防汛高频词" href="/s?wd=%E6%80%8E%E6%A0%B7%E7%9C%8B%E6%87%82%E9%98%B2%E6%B1%9B%E9%AB%98%E9%A2%91%E8%AF%8D&usm=3&ie=utf-8&rsv_pq=c86c3047001173dd&oq=python&rsv_t=ba18RhmAZEPN3AhMlLhvbMVhT8bUTG358FYHVG%2FfScwTPsbKy%2FybeEbdNXk&rqid=c86c3047001173dd&rsf=6891a5dd0f89410b36452a49d428d239_1_15_4&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811" class="c-font-medium c-color-t opr-toplist1-subtitle_1uZgw" data-click="{"clk_info":"{\"index\":4,\"page\":1,\"city\":\"\",\"type\":\"hot_fyb\"}","area":"RIGHT"}">怎样看懂防汛高频词<!--23--></a><a target="_blank" title="多地调整公积金存缴基数" href="/s?wd=%E5%A4%9A%E5%9C%B0%E8%B0%83%E6%95%B4%E5%85%AC%E7%A7%AF%E9%87%91%E5%AD%98%E7%BC%B4%E5%9F%BA%E6%95%B0&usm=3&ie=utf-8&rsv_pq=c86c3047001173dd&oq=python&rsv_t=ba18RhmAZEPN3AhMlLhvbMVhT8bUTG358FYHVG%2FfScwTPsbKy%2FybeEbdNXk&rqid=c86c3047001173dd&rsf=6891a5dd0f89410b36452a49d428d239_1_15_5&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811" class="c-font-medium c-color-t opr-toplist1-subtitle_1uZgw" data-click="{"clk_info":"{\"index\":5,\"page\":1,\"city\":\"\",\"type\":\"hot_fyb\"}","area":"RIGHT"}">多地调整公积金存缴基数<!--26--></a>"""return contentdef send_request3(key):content = """公有地址公有地址(Public address)由Inter NIC(Internet Network Information Center因特网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。私有地址01:23什么是内网IP?今天告诉你答案私有地址(Private address)属于非注册地址,专门为组织机构内部使用。以下列出留用的内部私有地址A类 10.0.0.0-10.255.255.255B类 172.16.0.0-172.31.255.255C类 192.168.0.0-192.168.255.255"""return contentif __name__ == '__main__':tex1 = send_request1('python 百度百科')# print(txt, type(tex1))# 需求1:提取文章中所有的英文单词,[a-zA-Z]+表示以英文字符开头,可以是多个字符# findAll第一个是正则公式,第二个是需要使用公式的内容words = re.findall(r'[a-zA-Z]+', tex1)for word in words:print(word)# 需求2:提取文章中所有的数字,多个数字 \d表示数字 \d+表示所有的数字numbers = re.findall(r'\d+', tex1)for number in numbers:print(number)# 需求3:提取文章中所有的英文单词和数字,把需求1和需求2结合起来wordsOrNums = re.findall(r'([a-zA-Z]+)|(\d+)', tex1)for wordOrNum in wordsOrNums:if wordOrNum[0]:print('单词:' + wordOrNum[0])else:print('数字:' + wordOrNum[1])print("*" * 30)# print(tex2, type(tex2))# 需求4:提取百度热搜的标题tex2 = send_request2('百度热搜')titles = re.findall(r'<a target="_blank" title="(.*?)"', tex2)for title in titles:print(title)print("*" * 30)tex3 = send_request3('ip地址类型 百度百科')# print(tex3, type(tex3))# 需求5:提取所有的ip地址ips = re.findall(r'\d+\.\d+\.\d+\.\d+', tex3)for ip in ips:print(ip)
执行结果如下: