Fork me on GitHub

python3正则表达式与json

正则表达式

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

实现一些替换文本的操作。(操作对象:字符串)

列如:

1.检查一串数字是否是电话号码
2.检测一个字符串是否符合email
3.把一个文本里指定的单词替换为另一个单词

1
2
3
import re
re.findall(‘正则表达式’,字符串) (在 “字符串” 中查找到所有的 “正则表达式” ) 返回的结果为 列表
1
\d (元字符)表示数字 0-9

正则表达式是由普通字符和元字符组成 基本元素

字符集

1
2
s = (‘abc, acc, adc, aec, afc, ahc’)
re.findall('a[cf]'c, s )

匹配是[ ]中 c或f 的结果
取反操作 [^cf]匹配结果 不是c或者f的字符串

概括字符集:元字符

1
2
3
4
5
\w 单词字符 \W
\s 空白字符 \S
. 匹配除换行符\n之外的其他所有字符

数量词

1
2
s = 'python 111java678php'
re.findall('[a-z]{3,6}' , s)

{3,6}用法是返回3个字符到6个字符的单词

贪婪 与 非贪婪

Python默认像贪婪方式匹配

非贪婪模式匹配

1
re.findall('[a-z]{3,6}?' , s)

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

1
2
3
* 匹配0次或者无限多次
+ 匹配1次或者无限多次
? 匹配0次或者1次 去重操作
1
2
s = 'pytho0python1pythonn2'
re.findall('python?',s)

边界匹配

判断一个qq是否为八位

1
2
qq = 123456789
re.findall('^\d{4,8}$',qq)

^从字符开始匹配 $从字符末尾开始匹配

1
2
a = 'pythonpythonpythonpython'
re.findall('(python){3}' , a)

()是一个组的关系 其中的元素是 且的关系

findall的第三个参数

1
2
3
language = PythonC#JavaPhp
re.findall('c#', labguage , re.I | re.S) re.I 忽略大小写 re.S匹配\n | 表示且关系

re.sub 替换函数

1
2
re.sub (pattern, rep1, string, count=0, flags=0)替换函数
将string中的pattern换成rep1

count的意思匹配成功后你能替换的最大次数

内置函数 replace(old,new)简单替换

重要

re.sub函数的第二个参数可以替换为一个函数 ;替换过程是匹配的结果作为参数传递给函数 , 函数的执行结果作为替换结果返回

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import re
language = ' PythonC#JavaC#PhpC#'
def convert(value):
matched = value.group()
return '!!' + matched + '!!'
r = re.sub('C#', convert, language)
print(r)
Resut: Python!!C#!!Java!!C#!!Php!!C#!!

match 与 search 的区别

  • 返回值: match 从字符串的首字母开始匹配 没有找到相应的匹配结果 则返回None
  • search搜索整个字符串 遇到匹配值 则返回
  • match 、search遇到匹配值就返回 结束当前匹配
  • findall 返回所有的匹配值

span 返回匹配值在字符串中的位置 group 返回匹配值的值

Group

1
2
3
4
5
6
7
8
9
import re
s = ‘life is short , i use python’
r = re.search ('life(.*)python',s) / r = re.findall('life(.*)python', s)
print(r.group(1)) / r.groups() / print(r)
Result: is short,i use

JSON

本质:是一种轻量级的数据交换格式

表现形式(载体)

字符串

JSON字符串

符合JSON格式的字符串

优势

易于阅读 易于解析 网络传输效率高 跨语言交换数据

反序列化

把JSON的字符串转化成python的某一种数据类型

1
json.loads()

JSON与Python数据类型转换

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

序列化

Python数据类型转换JSON数据类型的过程

1
json.dumps()
-------------本文结束 感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!