Python之路————正则表达式与JSON

Posted on 2018-02-21 18:42  卜算子  阅读(877)  评论(0)    收藏  举报

正则表达式

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

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

列如:

1.检查一串数字是否是电话号码

2.检测一个字符串是否符合email

3.把一个文本里指定的单词替换为另一个单词

import    re

re.findall(‘正则表达式’,字符串)    (在 “字符串” 中查找到所有的 “正则表达式” )    返回的结果为  列表

\d (元字符)表示数字  0-9 

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

字符集

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

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

概括字符集:元字符

\w 单词字符    \W

\s 空白字符    \S

.  匹配除换行符\n之外的其他所有字符

数量词

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

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

贪婪 与 非贪婪

Python默认像贪婪方式匹配  

非贪婪模式匹配:re.findall('[a-z]{3,6}?' , s)   

*  匹配0次或者无限多次

+  匹配1次或者无限多次

? 匹配0次或者1次  去重操作

1 s = 'pytho0python1pythonn2'
2 re.findall('python?',s) 

边界匹配

判断一个qq是否为八位

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

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

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

连续三个python

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

findall的第三个参数

language = PythonC#JavaPhp

re.findall('c#', labguage , re.I | re.S)   re.I 忽略大小写  re.S匹配\n   |  表示且关系

 

re.sub (pattern, rep1, string, count=0, flags=0)替换函数

将string中的pattern换成rep1

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

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

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

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

match 与 search 的区别

返回值: match 从字符串的首字母开始匹配 没有找到相应的匹配结果 则返回None

               search搜索整个字符串 遇到匹配值 则返回

  match 、search遇到匹配值就返回 结束当前匹配

  findall 返回所有的匹配值

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

Group

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

JSON  /  JavaScript Object Notation  /  JavaScript 对象标记 

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

表现形式(载体):字符串

JSON字符串:符合JSON格式的字符串

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

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

json.loads()

JSON与Python数据类型转换

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

 

序列化:Python数据类型转换JSON数据类型的过程    json.dumps()