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修改注册表终止360进程实例
Oct 13 Python
python根据unicode判断语言类型实例代码
Jan 17 Python
Django数据库类库MySQLdb使用详解
Apr 28 Python
python os.fork() 循环输出方法
Aug 08 Python
超实用的 30 段 Python 案例
Oct 10 Python
Python高阶函数、常用内置函数用法实例分析
Dec 26 Python
python列表推导和生成器表达式知识点总结
Jan 10 Python
详解pandas获取Dataframe元素值的几种方法
Jun 14 Python
基于python实现音乐播放器代码实例
Jul 01 Python
Python的信号库Blinker用法详解
Dec 31 Python
python通过函数名调用函数的几种方法总结
Jun 07 Python
详解如何用Python实现感知器算法
Jun 18 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
php下图片文字混合水印与缩略图实现代码
2009/12/11 PHP
PHP编译安装中遇到的两个错误和解决方法
2014/08/20 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
在你的网页中嵌入外部网页的方法
2007/04/02 Javascript
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
深入理解JavaScript定时机制
2010/10/29 Javascript
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
js 火狐下取本地路径实现思路
2013/04/02 Javascript
利用js判断浏览器类型(是否为IE,Firefox,Opera浏览器)
2013/11/22 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
2016/12/02 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
vue 指定组件缓存实例详解
2018/04/01 Javascript
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
基于vue2.0实现仿百度前端分页效果附实现代码
2018/10/30 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
常见的在Python中实现单例模式的三种方法
2015/04/08 Python
浅谈Python中range和xrange的区别
2017/12/20 Python
Python面向对象类继承和组合实例分析
2018/05/28 Python
python指定写入文件时的编码格式方法
2018/06/07 Python
Python实现查找数组中任意第k大的数字算法示例
2019/01/23 Python
Pytorch模型转onnx模型实例
2020/01/15 Python
Python通过类的组合模拟街道红绿灯
2020/09/16 Python
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
T3官网:头发造型工具
2019/12/26 全球购物
N:Philanthropy官网:美国洛杉矶基础款服装
2020/06/09 全球购物
Servlet如何得到服务器的信息
2015/12/22 面试题
人力资源部门的主要职能
2014/02/22 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
见习报告怎么写
2014/10/31 职场文书
2016年小学“感恩教师”主题队日活动总结
2016/04/01 职场文书
MyBatis 动态SQL全面详解
2021/10/05 MySQL