一.正则表达式 的作用:处理文本提取信息
二.正则表达式怎么写
1.正则表达式验证工具:https://regex101.com
2.正则表达式=普通字符+特殊字符
普通字符:任意字符,直接匹配
特殊字符:有特殊含义
三.常见的的特殊符号
. 匹配除换行符之后的任意单个字符
* 匹配前面子表达式任意次(包括0次)
+匹配前面子表达式任意一次或者多次
{m,n} 匹配m~n次
?尽可能少的去匹配
\ 进行转义 如果需要匹配特殊字符,就需要用\进行转义
\d 匹配0-9之间任意字符 [0-9]
\D陪陪不是0-9之间的任意字符 [^0-9]
\s匹配任意一个空白字符 包括空格 换行符 tab
\S匹配任意一个不是空白字符
\w 匹配任意一个文字字符 包括字母 数字 下划线
\W 匹配任意一个不是文字字符 包括字母 数字 下划线
[] 匹配几个字符之一
^ 表示文本的开头位置,非
$ 文本最后的位置
() (\d+)我的手机号码(\d+)
content="""
杭州 自动化测试 12-15k
西安 自动化工程师 10-18K*12薪
"""
方案一:用string的内置函数 split,find,join等
方案二:正则表达式
import re
r=re.complie(r'\d+-\d+K[\*\薪]*')
for one in r.findall(content):
print(one)
contend1="""13211113333我的手机号1111
134我的手机号码444
"""
r1=re.compile(r'(\d+)我的手机号(\d+)')
for two in r1.findall(content1):
print(two)
content2="""秋天;春天 夏天,冬天
"""
names=re.split(r'\W+',content2)
print(names)
--------JsonPath-----------
jsonpath作用:对json文本信息进行提取
json?类似字典但不是字典,结构类似字典的字符串
常见特殊符号:
$ 跟节点
.. 选择所有符号条件(模糊匹配)
*匹配所有的元素节点
@ 当前节点
?() 进行数据的过滤
. 取子节点
import jsonpath
d={
"error_code":0,
"stu_info":
[{"name":"zhangsan","sex":"femal",“class";"244"},
{"name":"lisi","sex":"femal",“class";"245"},
]
}
name=d["stu_info"][0]["name"]
print(name)
#模糊匹配
data=jsonpath.jsonpath(d,"$..name")
#精确匹配
data=jsonpath.jsonpath(d,"$.stu_info[0].name")
data=jsonpath.jsonpath(d,"$.stu_info[:2]")
#过滤性别为Femal的信息
data=jsonpath.jsonpath(d,"$.stu_info[?(@.sex=='femal')]")
#过滤包含性别的信息
data=jsonpath.jsonpath(d,"$.stu_info[?(@.sex)]")
"""
jsonpath模块出处理json数据
"""
json_data='{"name":"aa","id":"11"}'
#json数据转化成字典,反序列化
d2=json.loads(json_data)
print(jsaonpath.jsonpath(d2,"$.name")