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读写文件操作示例程序
Dec 02 Python
Python3解决棋盘覆盖问题的方法示例
Dec 07 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
Dec 14 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
Aug 02 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
Jun 19 Python
用python建立两个Y轴的XY曲线图方法
Jul 08 Python
python处理大日志文件
Jul 23 Python
基于python实现语音录入识别代码实例
Jan 17 Python
用Python进行websocket接口测试
Oct 16 Python
Python数据可视化常用4大绘图库原理详解
Oct 23 Python
关于PySnooper 永远不要使用print进行调试的问题
Mar 04 Python
python编程实现清理微信重复缓存文件
Nov 01 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
Sony CFR 320 修复改造
2020/03/14 无线电
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
2006/12/06 PHP
php 7新特性之类型申明详解
2017/06/06 PHP
PHP查询分页的实现代码
2017/06/09 PHP
javascript入门·对象属性方法大总结
2007/10/01 Javascript
告诉大家什么是JSON
2008/06/10 Javascript
flexigrid 参数说明
2010/11/23 Javascript
JS编程小常识很有用
2012/11/26 Javascript
JavaScript判断文件上传类型的方法
2014/09/02 Javascript
js实现图片缓慢放大缩小效果
2016/08/02 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
js实现移动端微信页面禁止字体放大
2017/02/16 Javascript
前端开发之CSS原理详解
2017/03/11 Javascript
HTML5实现微信拍摄上传照片功能
2017/04/21 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
了解javascript中let和var及const关键字的区别
2019/05/24 Javascript
JS实现移动端在线签协议功能
2019/08/22 Javascript
vue element自定义表单验证请求后端接口验证
2019/12/11 Javascript
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
Django视图之ORM数据库查询操作API的实例
2017/10/27 Python
python 如何将office文件转换为PDF
2020/09/22 Python
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
HTML5 script元素async、defer异步加载使用介绍
2013/08/23 HTML / CSS
阿迪达斯香港官网:adidas香港
2019/11/09 全球购物
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
乌鸦喝水教学反思
2014/02/07 职场文书
《听鱼说话》教学反思
2014/02/15 职场文书
人力资源求职信
2014/05/25 职场文书
活动总结范文
2014/08/30 职场文书
小学生家长意见
2015/06/03 职场文书
婚宴新娘致辞
2015/07/28 职场文书
《最终幻想14》6.01版本4月5日推出 追加新任务新道具
2022/04/03 其他游戏
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技