正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。
# -*- coding: utf-8 -*-
"""
Created on Wed Apr 8 11:11:48 2020
Chapter10
@author: J
"""
#%%
a = 'Java|Python|R|Matlab'
print('Python' in a )
import re
a = 'abc,acc,aec,afc,atc' #字符串
x1 = re.findall('a[bc]c',a) #[]代表或的意思
x2 = re.findall('a[b-f]c',a)
#%%
#概括字符集
# \w = [0-9a-zA-Z] 单字符
#\W 非单字符
#\s 空白字符
a = 'dj23e3i43f2j1mh83iu33efje'
re.findall('\d',a) #数字
re.findall('\D',a) #非数字
re.findall('[^0-9]',a) # ^非 0-9
#%%
#数量词
a = 'javpythona29i393 py\23t##hoDSnnnnndd301c2pytho'
re.findall('[a-z][a-z][a-z]',a) #三个连着的一选,忽略了i和c 右边不符合规则
print(re.findall('[a-z]{2,6}?',a)) # 非贪婪 ?与 重复次数de ?不同
print(re.findall('python*',a)) #重复0次或多次 此处指的时n的匹配次数
print(re.findall('python+',a))
print(re.findall('python?',a))
print(re.findall('python{1,2}?',a)) #这里的{}只用于前面的n
print(re.findall('(python){3}',a)) #组 []或关系 ()且关系
re.findall('[a-z][a-z][a-z]', a, re.I |re.S ) #re.I忽略大小写 | re.S 包含所有字符
#符号*匹配0次或者无限多次
# 符号+匹配1次或者无限多次
# 符号?匹配0次或者1次
#默认贪婪 非贪婪?
#%%
#边界匹配
qq = '100000001'
#4-8
r = re.findall('^\d{4,8}$',qq) # ^从前匹配 $从后匹配,匹配一遍完整的字符串
re.findall('000',qq) #从0开始匹配
re.findall('^000',qq) #从前面三个字符开始匹配
re.findall('000$',qq) #从最后三个字符开始匹配
print(r)
# value.group() #返回对象中的字符
#%%
#替换
a = 'Py9498dfe438G34o3/Jav23a/Py5thon'
r = re.sub('Python','C##',a, count = 1) #只能替换一次
b = a.replace("Python",'C##') #str不可变,用此函数后必须要赋值到另一个变量
a = '83hof983h780s90283ijo'
def convert(value):
match = value.group()
#在python语言中的re模块,有两个方法group()和groups()。其中,group()方法是匹配所有的部分,也可以匹配子组
print(match)
if int(match) <= 6: #search返回的对象match object才能用group
return '0'
else:
return '9'
c = re.sub('\d', convert, a)
c
#%%
#JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。
#可以作为各语言数据格式转换的中介
import json
json_str = '{"name":"Jake","age":"24","job":"analyst"}' #外面单引号以表示字符串
#jason的object类型
#反序列化 JSON字符串---->某种数据结构
student = json.loads(json_str) #不同语言会翻译成不同类型
print(type(student)) #Json object----> Python dict
print(student)
json_str1 = '[{"name":"Jake","age":24},{"job":"analyst","sex":"Male"}]'
#json的array类型
student1 = json.loads(json_str1) #不同语言会翻译成不同类型
print(type(student1)) #Json array [ {},{}] --->python的list
print(student1)
#把Json的数据类型改变成python的数据类型
#Json数据类型 object, array,string, number, number ,true ,false,null
#python数据类型:dict,list,str,int,float,True,False,NONE
#序列化 :Python的数据类型----》JSON字符串
student2 = [
{"name":"Jake","age":24},
{"job":"analyst","sex":"Male"}
]
jon_str2 = json.dumps(student2)
jon_str2