赞
踩
古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。——苏轼
注:如果感觉小甜写的不错,想要转载的话,一定要经过甜甜本甜的允许呦,不然甜甜会生气呢
目标:可以用Python做一些简单的数据分析。
坚持完成自己的目标!勿忘初心~
昨天Python中的正则表达式给学习完了,正则表达式在爬虫中是灰常灰常有用的一个工具,因为爬出来的信息多而杂乱,正则表达式和re模块就可以很好的帮助我们来完成这些杂乱信息的分类和处理。
今天就来练习一下正则表达式的应用,然后整理一些常用的正则表达式。
假如需要在一大篇文章中提取出里面的电话号码和邮箱地址,如果手动的找不仅浪费时间而且还容易漏掉,这个时候就需要编写一个这样的小程序来完成这项任务
第一步:创建一个匹配电话号码的正则对象
# 正则表达式的样式编译为一个正则对象,使用re.X添加注释
phone_regex = re.compile(r"""(0\d{2,3}|\(\d{2,3}\) # 匹配电话号码的开头
([\s-\.])? # 匹配中间的分隔符
(\d{7,8})
)""", re.X)
第二步:创建一个匹配邮箱地址的正则对象(论对象的重要性)
# 第二步穿件检测邮箱的正则
email_regex = re.compile(r"""([a-zA-Z0-9/_%+-]+ # 匹配用户名
@\w+ # 例如:@qq,@193等等
\.[a-zA-Z]{2,4} # 匹配最后一部分
)""", re.X)
第三步:定义一个查找电话号的函数
# 第三步定义一个查找电话号的函数
def phone(file_name):
with open(file_name, encoding="utf8") as file1: # 打开文件命名
file_str = file1.read() # 读取文件内容
phone_content = phone_regex.findall(file_str) # 查找内容
return phone_content
第四步:定义一个打开查找邮箱的函数
# 第四步定义一个打开查找邮箱的函数
def email(file_name):
with open(file_name, encoding="utf8") as file1: # 打开文件命名
file_str = file1.read() # 读取文件内容
email_content = email_regex.findall(file_str) # 查找内容
return email_content
最后一步:将文本内容写入一个文件
# 最后一步将结果写入一个文件 # 测试函数 phones = phone("text.txt") emails = email("text.txt") # print(phone) # print(email) with open("content.txt", mode="a+", encoding="utf8") as file: # 使用with...as打开文件可以自动关闭 file.write("-------电话-------\n") for phone in phones: file.write(phone) file.write("\n") # 手动加入一个换行 file.write("-------邮箱-------\n") for email in emails: file.write(email) file.write("\n")
到这里就写完了,来测试一下
我随便复制了点东西,然后在里面随便加了点邮箱,电话(国内电话,非手机号)
总之就是非常的乱,主要看结果
最终结果
反正最后的结果很是完美
PS:上面用到的信息纯属虚构
输入QQ号判断是否符合标准
""" -*- coding:uft-8 -*- author: 小甜 time:2020/5/31 """ import re pattern = r"^[1-9]\d{4,9}$" while True: qq = input("请输入QQ:") qq_match = re.match(pattern, qq) if qq_match: print("QQ无误") break else: print("QQ输入有误") break
正则表达式 | 含义 |
---|---|
^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$ | 邮箱地址 |
((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d)) | IPV4地址 |
(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])) | IPV6地址 |
https?\:\/\/[\S]+ | URL |
[一-龥]+ | 匹配所有汉字 |
^-?([1-9]\d*|0)(\.\d{1,2})?$ | 金额 |
(?<=^|[\s])([一-龥])([一-龥])(?=$|[\s]) | 两个字的姓名 |
(?<=^|[\s])([一-龥])([一-龥])(?=$|[\[^\\]+$ | 路径中提取文件 |
(?<=^|[\s])([一-龥])([一-龥]^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$ | 密码验证 |
(?<=abc|^)((?!abc).)+ | 排除字符串 |
^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$ | 日期 |
(^[1-9]\d{7}((0\d)|(1[0-2]))(([012]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}(?:(?:0\d)|(?:1[0-2]))(?:(?:[012]\d)|3[0-1])\d{3}(?:[\d]|X)$) | 身份证 |
^(([1-9]{1})|([0-1][0-9])|([1-2][0-3])):([0-5][0-9])$ | 时间(时:分) |
^(([1-9]{1})|([0-1][0-9])[^\((?<=\/\/www\.)[^\/\:]+|(?<=\/\/)(?!www\.)[^\/\:]+) | 网址中提取域名 |
^[a-zA-Z]\:(\\[^\\\/\:\*\?\"\<\>\|]+)*\\?$ | 路径 |
#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}) | 颜色代码 |
后面的内容纯属让这个表格看起来更容易一点,不过有一句实话,(。◕ˇ∀ˇ◕) 哈哈,又自恋了 | 占位占位占位占位占位甜位占位占位占甜占位占位占位真位占位占位占好占位占位占位看位占位占位占位占位占 |
以上的正则表达式都来源于网络
对正则的练习以及整理了一些正则表达式
用了32天终于把Python中的基础知识给拿下了!
用一周的时间完成2-3个的结课项目
从6月8号起开始学习爬虫,开始更新*《甜甜爬全网》*系列,一周更新2-3贴,对我来说毕竟是新内容加难内容,速度肯定不会太快
座右铭:不要在该奋斗的年纪选择安逸!!
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。