【Python之正则表达式与JSON】

简介: 正则表达式是一个特殊的字符序列,一个字符串是否与我们所设定的这样的字符序列,相匹配。

Python之正则表达式与JSON


1、定义


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

可以快速检索文本,实现一些替换文本的操作

a = ‘C|C++|C#|Python|Javascript’
print(a.index('Python')> -1)
print('Pythin' in a)
import re
a = ‘C|C++|C#|Python|Javascript’
r = re.findall('Python', a)     #返回一个列表
if len(r) > 0:
  print("字符串中包含Pyython")
import re
a = ‘C0C++4C#6Python1Javascript’
r = re.findall('\d',a)    #正则表达式中用“\d”统配数字
print(a)

'Python’普通字符 ‘\d’元字符

import re
a = ‘C0C++4C#6Python1Javascript’
r = re.findall('\D',a)    #正则表达式中用“\D”匹配所有的非数字
print(a)

字符集

import re
a = 'abc,acc,adc,aec,afc,ahc'
r = re.findall('a[cf]c',s)    #匹配出acf或afc
print(r)
import re
a = 'abc,acc,adc,aec,afc,ahc'
r = re.findall('a[^cf]c',s)    #匹配出非acf和非afc
print(r)
import re
a = 'abc,acc,adc,aec,afc,ahc'
r = re.findall('a[c-f]c',s)    #匹配出a[c,d,e,f]c
print(r)

概况字符集

import re
a = ‘C0C++4C#6Python1Javascript’
r = re.findall('\d',a)    #正则表达式中用“\d”统配数字
print(a)
import re
a = ‘C0C++4C#6Python1Javascript’
r = re.findall('[0-9]',a)    #正则表达式中用“\d”统配数字等价于[0-9]
print(a)
```python
import re
a = ‘C0C++4C#6Python1Javascript’
r = re.findall('\w',a)    #正则表达式中用“\w”匹配所有的数字字母
print(a)
"\w" 单词字符集,可以匹配大小写字母,数字和_     等价于[A-Za-z0-9_]
“\W” 非单词字符集 &
“\s” 空白字符 包括空格,\t,\n,\r
“\S”  匹配非空白字符
. 匹配除\n以外的所有字符

数量词

import re
a ='python 1111java678php'
r = re.findall('[a-z]{3}',a)    #匹配连续的a-z的三个字符
print(r)
import re
a ='python 1111java678php'
r = re.findall('[a-z]{3,6}',a)    #匹配连续的a-z的3到6个字符
print(r)

贪婪与非贪婪 尽可能匹配最大值

import re
a ='python 1111java678php'
r = re.findall('[a-z]{3}',a)    #匹配连续的a-z的三个字符
print(r)
结果:
['python','java','php']     由于贪婪

非贪婪模式,大括号后加?

import re
a ='python 1111java678php'
r = re.findall('[a-z]{3,6}?',a)    #非贪婪模式匹配
print(r)
结果:
['pyt’,hon','jav','php']     #由于非贪婪只匹配3个字符
*  匹配*前面的字符0次或无数次
+  匹配*前面的字符1次或无数次
? 匹配*前面的字符0次或1次

边界匹配

import re 
a = '100001'
r = re.findall('\d{4,8}',qq)   #匹配4到8位数字
print(r)
import re 
a = '100001'
r = re.findall(^'\d{4,8}$',qq)   #边界匹配
print(r)
import re 
a = '10000000001'
r = re.findall(^'000$',qq)   #边界匹配
print(r)
import re
a = 'PythonPythonPythonPythonPythonPython'
r = re.findall('(Python){3}',a)
print(r)
import re
lanuage = 'PythonC#JavaPHP'
r = re.findall(‘c#.{1}’,lanuage,re.I |re.S)   
print(r)
re.I 忽略大小写   re.S 改变.的功能

re.sub

import re 
lanuage = 'PythonC#JavaPHP'
r = re.sub(‘C#’,'GO',lanuage,1)
print(r)
# r = re.sub(‘需要被替换的字符’,‘替换后的字符',lanuage,被替换的次数(1表示1次,0表示无数次))
import re 
lanuage = 'PythonC#JavaPHP'
r = lanuage.replace(‘C#’,'GO')
print(r)
import re 
lanuage = 'PythonC#JavaPHP'
def convert(value):
  pass
# 先匹配C#,将c#作为参数传给convert()函数,再将返回值用于替换C#
r = re.sub(‘C#’,convert,lanuage)
print(r)
import re
s = 'ABC3721D86'
r = re.match('\d',s)    
#从字符串首字母开始匹配,第一个字符不符合,则返回空
print(r)
r1 = re.search('\d',s)
# 搜索整个字符串,首字母对匹配不影响
print(r1)
# 他们都只匹配一次

group()函数

span()函数

# 获取life和python中间的内容
import re
s = 'life is short,i use python'
r = re.search('life.*python',s)
print(r.gruop())
group(0)默认返回完整匹配结果,要通过组号访问,需要从group(1)开始
import re
s = 'life is short,i use python, i love python'
r = re.search('life(.*)python(.*)python',s)
print(r.gruop(0))
print(r.gruop(1))
print(r.gruop(2))
# print(r.group(0,1,2))
print(r.groups())    #只会返回之间的字符串

JSON

javascript 对象标记

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

JSON字符串,符合json格式的字符串

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

json的载体,json字符串

import json
# json_str = "{'name':'qiyue','age':18}"    #错误,json字符串规定用“”
 json_str = '{"name":"qiyue","age":18}'    #json object
student = json.loads(json_str)
print(type(student))
print(student)
print(student['name'])
print(student['age'])
import json
json_str = '{"name":"qiyue","age":18,"flag":false},{"name":"qiyue","age":18}'
student = json.loads(json_str)
print(type(student))
print(student)
从字符串到语言的数据类型的转换,反序列化
序列化
import json
studeht = [   {"name":"qiyue","age":18,"flag":false},   {"name":"qiyue","age":18}]
json_str = json.dumps(student)
print(json_str)
json        python
object      dict
array     list
string    str 
json对象 json   json字符串
javascript    ECMSCRIPT规范和标准的实现


相关文章
|
4月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
3月前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
89 5
|
3月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
3月前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
4月前
|
Python
【收藏备用】Python正则表达式的7个实用技巧
【收藏备用】Python正则表达式的7个实用技巧
41 1
|
4月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
71 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
|
4月前
|
数据安全/隐私保护 Python
Python实用正则表达式归纳
Python实用正则表达式归纳
31 3
|
4月前
|
Python
Python 正则表达式高级应用指南
正则表达式是文本模式匹配的强大工具,Python 的 `re` 模块支持其操作。本文介绍正则表达式的高级应用,包括复杂模式匹配(如邮箱、电话号码)、分组与提取、替换操作、多行匹配以及贪婪与非贪婪模式的区别。通过示例代码展示了如何灵活运用这些技巧解决实际问题。
44 7
|
4月前
|
JSON 数据格式 Python
Python编程:利用JSON模块编程验证用户
Python编程:利用JSON模块编程验证用户
40 1
|
5月前
|
JSON API 数据格式
使用Python发送包含复杂JSON结构的POST请求
使用Python发送包含复杂JSON结构的POST请求

热门文章

最新文章