正则表达式和Json

正则表达式(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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值