Python中的正则表达式与JSON数据交换格式


Posted in Python onJuly 03, 2019

一、初识正则表达式

正则表达式 是一个特殊的字符序列,一个字符串是否与我们所设定的这样的字符序列,相匹配快速检索文本、实现替换文本的操作

json(xml) 轻量级 web 数据交换格式

import re
a='C|C++|Java|C#||Python|Javascript'
r= re.findall('Python',a)
print(r)
if len(r) > 0:
 print('字符串中包含Python')
else:
 print('No')
['Python']
字符串中包含Python

二、元字符与普通字符

import re
a='C0C++7Java8C#9Python6Javascript'
r= re.findall('\d',a)
print(r)
b=''
for x in a:
 try:
 int(x)
 b +=x+','
 except :
 pass
print(b)

结果:

['0', '7', '8', '9', '6']
0,7,8,9,6,

'Python' 普通字符 '\d' 元字符

三、字符集

import re
#找出中间一个字符不是C 和F的 单词
s = 'abc, acc, adc, aec, afc, ahc'
r = re.findall('a[^cf]c', s) #[a-z] [cf]
print(r)

结果:

['abc', 'adc', 'aec', 'ahc']

四、概括字符集

#\d 数字 \D 字母
#\w 数字和字母 =[a-zA-Z0-9_] \W 
#\s 空白字符 \S
a='python 11\t11java&678p\nh\rp'
r = re.findall('\s', a)
print(r)

结果:

[' ', '\t', '\n', '\r']

五、数量词

a='python 1111java&678php'
r = re.findall('[a-z]{3,6}', a)
print(r)

结果:

['python', 'java', 'php']

六、贪婪与非贪婪

a='python 1111java&678php'
r = re.findall('[a-z]{3,6}?', a)
#贪婪 与 非贪婪 ?
print(r)

结果:

['pyt', 'hon', 'jav', 'php']

七、匹配0次1次或者无限多次

# * 匹配0次或者无限多次
# + 匹配1次或者无限多次
# ? 匹配0次或者1次
a='pytho0python1pythonn2pythonw'
r = re.findall('python*', a)
print(r)

结果:

['pytho', 'python', 'pythonn', 'python']

八、边界匹配符

qq = '12345678'
# 4~8 
r = re.findall('^\d{4,8}$', qq)
print(r)
a = '123456789'
# 4~8 ^规则$ ^开头 $结尾
e = re.findall('^\d{4,8}$', a)
print(e)

结果:

['12345678']
[]

九、组

# () 组
a = 'pythonpythonpythonpythonpython'
# 
r = re.findall('(python){3}', a)
print(r)

结果:

['python'] 代表存在一组(pythonpythonpython) 这样的数据

十、匹配模式参数

# I | S 忽略大小写 | 匹配所有字符
lanuage = 'PythonC#\nJavaPHP'
r = re.findall('c#.{1}', lanuage,re.I | re.S)
print(r)

结果:

['C#\n']

十一、re.sub正则替换

搜索替换

def convert(value):
 matched = value.group()
 # print(value) <_sre.SRE_Match object; span=(6, 8), match='C#'>
 return '!!'+matched+'!!'
lanuage = 'PythonC#JavaC#PHPC#'
# r = re.sub('C#', 'GO', lanuage, 1) 返回结果: PythonGOJavaC#PHPC#
# s=lanuage.replace('C#', 'GO')
r = re.sub('C#', convert, lanuage) #传入参数
print(r)

结果:

Python!!C#!!Java!!C#!!PHP!!C#!!

十二、把函数作为参数传递

def convert(value):
 matched = value.group() #拿到对象的值
 # print(value) <_sre.SRE_Match object; span=(6, 8), match='C#'>
 if int(matched) >=6 :
 return '9'
 else:
 return '0'
lanuage = 'A8C3721D86'
r = re.sub('\d', convert, lanuage)
print(r)
#
A9C0900D99

十三、search与match函数

s = 'A8C3721D86'
# None 从开头开始匹配 假如没有找到相应的匹配结果 返回None 只匹配一次
r = re.match('\d', s) 
print(r) #None
#搜索这个字符串 一旦找到第一个满足匹配的结果就返回 只匹配一次
r1 = re.search('\d', s)
print(r1) #<_sre.SRE_Match object; span=(1, 2), match='8'>
print(r1.group()) #8
print(r1.span()) # (1, 2)
r2 = re.findall('\d', s)
print(r2) #['8', '3', '7', '2', '1', '8', '6']

十四、group分组

#提取life 和python 之间的值
s = 'life is short,i use python'
#None
r = re.search('life.*python', s)
print(r.group()) #life is short,i use python group(组号)
r = re.search('life(.*)python', s)
print(r.group(0)) #life is short,i use python group(组号)
print(r.group(1)) # is short,i use
#group(0) 一种特殊情况 匹配正则表达式完整的结果
r = re.findall('life(.*)python', s)
print(r) #[' is short,i use ']
s = 'life is short,i use python, i love python'
r = re.search('life(.*)python(.*)python', s)
print(r.group(0)) # life is short,i use python, i love python 
print(r.group(1)) # is short,i use
print(r.group(2)) # , i love
print(r.group(0,1,2)) #('life is short,i use python, i love python', ' is short,i use ', ', i love ')
print(r.groups()) # (' is short,i use ', ', i love ')

十五、一些关于学习正则的建议

#\d 数字 \D 字母
#\w 数字和字母 =[a-zA-Z0-9_] \W 
#\s 空白字符 \S
# . 匹配除了换行符\n之外其他所有字符
# * 匹配0次或者无限多次
# + 匹配1次或者无限多次
# ? 匹配0次或者1次
# () 组 
# I | S 忽略大小写 | 匹配所有字符

python :爬虫,数据处理

十六、理解JSON

JSON 是一种轻量级的数据交换格式

字符串是JSON的表现形式

符合 JSON 格式的字符串叫做 JSON 字符串

{"name":"qiyue"}

JSON VS XML

优势:

跨语言交换数据

易于阅读

易于解析

网络传输效率高

十七、反序列化

import json
# JSON object array
json_str = '{"name":"qiyue","age":18}'
s = json.loads(json_str)
# dict
#反序列化
s = json.loads(json_str) #load() 把json 的数据类型 转换为我们自己语言的数据类型
print(type(s)) #<class 'dict'>
print(s) #{'name': 'qiyue', 'age': 18}
print(s['name']) # qiyue
json_str = '[{"name":"qiyue","age":18},{"name":"qiyue","age":18}]'
s = json.loads(json_str)
print(type(s)) # <class 'list'>
print(s) # [{'name': 'qiyue', 'age': 18}, {'name': 'qiyue', 'age': 18}]

JSON Python
object dict
array list
string str
number int
number float
true True
false False
null None

十八、序列化

#序列化 为json
student = [
 {"name":"qiyue","age":18, 'flag':False},
 {"name":"python","age":18}
]
json_str = json.dumps(student)
print(type(json_str)) # <class 'str'>
print(json_str) #[{"name": "qiyue", "age": 18, "flag": false}, {"name": "python", "age": 18}]

十九、小谈JSON、JSON对象与JSON字符串

JSON 是一种轻量级的数据交换格式

JSON对象 局限于语言

JSON字符串

JSON 有自己的数据类型

虽然它和JavaScript 的数据类型有些相似 但是他们不是一种语言

ECMASCRIPT一个标准 JavaScript ActionScription JSON 实现标准的一种方案

REST 服务

Python中的正则表达式与JSON数据交换格式

总结

以上所述是小编给大家介绍的Python中的正则表达式与JSON数据交换格式 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python去掉字符串中空格的方法
Mar 11 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
Oct 18 Python
利用Python实现图书超期提醒
Aug 02 Python
详解django三种文件下载方式
Apr 06 Python
解决PyCharm import torch包失败的问题
Oct 13 Python
python输入整条数据分割存入数组的方法
Nov 13 Python
python安装pywin32clipboard的操作方法
Jan 24 Python
python验证身份证信息实例代码
May 06 Python
Django自定义用户登录认证示例代码
Jun 30 Python
python3中pip3安装出错,找不到SSL的解决方式
Dec 12 Python
快速一键生成Python爬虫请求头
Mar 04 Python
Python 键盘事件详解
Nov 11 Python
python实现共轭梯度法
Jul 03 #Python
python实现微信自动回复及批量添加好友功能
Jul 03 #Python
Python 中Django安装和使用教程详解
Jul 03 #Python
利用python求积分的实例
Jul 03 #Python
python可视化爬虫界面之天气查询
Jul 03 #Python
python读写配置文件操作示例
Jul 03 #Python
Python正则表达式匹配数字和小数的方法
Jul 03 #Python
You might like
解决GD中文乱码问题
2007/02/14 PHP
Session保存到数据库的php类分享
2011/10/24 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
php+mysqli使用面向对象方式查询数据库实例
2015/01/29 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
js Form.elements[i]的使用实例
2011/11/13 Javascript
给文字加上着重号的JS代码
2013/11/12 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
JavaScript实现强制重定向至HTTPS页面
2015/06/10 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
原生js实现淘宝放大镜效果
2020/10/28 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
[01:11:48]Fnatic vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python开发的单词频率统计工具wordsworth使用方法
2014/06/25 Python
python实现批量注册网站用户的示例
2019/02/22 Python
如何基于Python批量下载音乐
2019/11/11 Python
解决python3插入mysql时内容带有引号的问题
2020/03/02 Python
HTML5中原生的右键菜单创建方法
2016/06/28 HTML / CSS
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
法国春天百货官网:Printemps.com
2020/06/29 全球购物
2014年五一促销活动方案
2014/03/09 职场文书
六一儿童节主持词
2014/03/21 职场文书
销售岗位职责范本
2014/06/12 职场文书
庆元旦活动总结
2014/07/09 职场文书
保护动物的宣传语
2015/07/13 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL