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从网络读取图片并直接进行处理的方法
May 22 Python
简析Python的闭包和装饰器
Feb 26 Python
Python用threading实现多线程详解
Feb 03 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
Jul 24 Python
python中is与双等于号“==”的区别示例详解
Nov 21 Python
TensorFlow实现RNN循环神经网络
Feb 28 Python
python解决字符串倒序输出的问题
Jun 25 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
Python动态语言与鸭子类型详解
Jul 01 Python
python对验证码降噪的实现示例代码
Nov 12 Python
keras的siamese(孪生网络)实现案例
Jun 12 Python
Matplotlib可视化之添加让统计图变得简单易懂的注释
Jun 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
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
PHP间隔一段时间执行代码的方法
2014/12/02 PHP
PHP入门教程之面向对象基本概念实例分析
2016/09/11 PHP
JavaScript获得选中文本内容的方法
2008/12/02 Javascript
jquery tools 系列 scrollable学习
2009/09/06 Javascript
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
window.location不跳转的问题解决方法
2014/04/17 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
2018/08/17 Javascript
详解angularjs跨页面传参遇到的一些问题
2018/11/01 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
javascript用defineProperty实现简单的双向绑定方法
2020/04/03 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
简单实现Python爬取网络图片
2018/04/01 Python
pandas 透视表中文字段排序方法
2018/11/16 Python
学习python分支结构
2019/05/17 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
中华魂演讲稿
2014/05/13 职场文书
校园新闻广播稿5篇
2014/10/10 职场文书
2014年班组长工作总结
2014/11/20 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
推荐信范文大全
2015/03/27 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
成事在人观后感
2015/06/16 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
如何在python中实现ECDSA你知道吗
2021/11/23 Python
Python中super().__init__()测试以及理解
2021/12/06 Python