Python3之10正则表达式与JSON(mooc课程笔记)

本文深入探讨了正则表达式的使用技巧,包括模式匹配、贪婪与非贪婪匹配、特殊字符转义等,并通过实例展示了如何在Python环境中进行字符串处理。同时,文章也讲解了JSON数据格式的基本概念及Python中JSON数据的解析与转换。
部署运行你感兴趣的模型镜像

正则表达式:字符串的一种描述的模式。
JSON:JSON是一种数据格式。
环境:python3.7,开发工具:vs code。

#正则表达式与JSON,正则表达式多用于爬虫
a = 'test|@|python'
import re
ab = 'C|C++|Java|Python'
r = re.findall('Python',ab)
if len(r) > 0:
    #print('包含该字符!')  
    pass 
else:
    #print(' ')
    pass 

b= 'dasd8da9ad12sa'
re.findall('\d',b)  #'\d'数字,'\D'非数字

re.findall('\D',b)

s = 'abc,acc,adc,aec,afc,ahc'

re.findall('a[bd]c',s)  #中间一个字符是b或者d的单词:
re.findall('a[^bd]c',s)  #中间一个字符不是b或者d的单词:
rs = re.findall('a[b-f]c',s)    #利用字符顺序省略字符,匹配b,c,d,e,f:

#\d = [0-9] ,\w只能匹配单词字符,也就是den[A-Za-z0-9_]
#\W只匹配非单词字符,如空格、&、\n、\r等都为非单词字符
#\s代表空白字符:空格、\n、\r等空白字符; \S	匹配非空白
ro = re.findall('\w',a)
#print(ro)
e = 'python1111&_java678 \nph\rp'
re.findall('\s',e)

#{}
c = 'python11aa11 java678php'
s = 'abc1defghiqqqqi'
three =  re.findall('[a-z]{3}',c)#选择三个相连的小写字母
fore1 =  re.findall('[a-z]{1,13}',s)#默认贪婪匹配
# print(fore1)

fore2 =  re.findall('[a-z]{3,6}?',c)#非贪婪匹配-尽可能短的匹配
# print(fore2)

#匹配0次或者无限多次
py = 'pytho0python1pythonn2epythons'
#print(re.findall('python*',py))

#用+匹配一次或者无限多次:
#print(re.findall('python+',py))

#用?匹配0次或者一次:  ?有没有
#print(re.findall('python?',a))

qq = '10000004531'
#print(re.findall('^\d{4,10}1$',qq)) #^从字符串开头开始匹配 $从字符串末尾开始匹配 000$:最后三位是000 ^000:开始三位是000

pyth = 'pythonpythonpythonpythonpython'
#print(re.findall('(python){3}',pyth)) #查看python是否重复3次
#print(re.findall('[python]{3}',pyth)) #[]里的字符是或关系 ,()里的字符是且关系??

#匹配模式参数 
pipei = 'pythonC#\nJavaPHP'
re.findall('C#.{1}',pipei,re.I|re.S)#re.I:忽略大小写,多个模式之间用|,这里的|是且的关系 ,re.S:匹配包括\n在内的任意字符


#re.sub正则替换 
subjet = 'PythonC# JavaPHPC#'
#o = re.sub('C#','GO',subjet,0) ,#0:把所有的C#换成GO,1:只有第一个匹配到的被替换成GO.2,只有前两个
#print(id(subjet))
#subjet = subjet.replace('C#','GO') #常规替换
#print(id(subjet))     #str不可变
#print(o)
#print(subjet)

#sub的第二种用法:
def convert(value):
    #print(value) #看value的值,更好理解convert函数.
    matched = value.group()
    return '!!'+matched+'!!'
#将C#前后加!!操作 ,把函数当作参数传入sub函数种,具体业务由convert处理。
ro = re.sub('C#',convert,subjet,2)  
#print(ro)

#找出数字,大于等于6的替换成9,小于6的替换成0:
numbs = '8C3721D86A'
def dig_sep_convert(value):
    matched = value.group()
    #print(type(matched))
    if int(matched) >= 6 :
        return '9'
    else:
        return '0'

dig_sep = re.sub('[0-9]',dig_sep_convert,numbs,0)
#print(dig_sep)

#match 与 search
#match 从字符串开始的地方开始匹配(首字母开始匹配)。
#search:搜索整个字符串,直到找到第一个满足的结果并返回。
matchedstr = re.match('[0-9]',numbs)
#print(matchedstr.group()) #以str形式返回对象中match的元素
#print(matchedstr.span()) #span	以tuple形式返回范围
searchstr = re.search('[0-9]',numbs)
#print(searchstr.group())

#python中的空指针异常.
# Traceback (most recent call last):
#   File "d:/Pyproject/p10.py", line 102, in <module>
#     print(matchedstr.span())
# AttributeError: 'NoneType' object has no attribute 'span'

s = 'life is short,I use python,I love python'
s = re.search('life(.*)python(.*)python',s)
#print(s.group()) #group(0)是完整匹配结果 
#print(s.group(1)) #group(1)是匹配第一个(.*)的结果
#print(s.group(2)) #group(2)是匹配第二个(.*)结果 
#print(s.groups()) #(' is short,I use ', ',I love ')


#JSOn:JSON是一种数据格式.
#json.dumps将一个Python数据结构转换为JSON;
#json.loads将一个JSON编码的字符串转换回一个Python数据结构:
import json
#student_info = [{"name":"li","age":23,"flag":False},{"name":"liu","age":25,"flag":False}]
json_str = '{"name":"tai","age":23}' 
jsonstr =  json.loads(json_str)
print(jsonstr['age'])
print(type(json.dumps(jsonstr)))

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think>好的,我现在需要处理用户关于Python正则表达式PPT资料的请求。首先,用户希望找到相关的PPT件或教程,我需要根据提供的引用信息来回答。 首先,查看用户提供的引用内容。引用[1]、[2]、[3]和[4]都涉及Python正则表达式的不同方面,比如贪心模式、flag用法、示例以及敏感词过滤。其中引用[4]提到了董付国老师的优快云学院课程,可能包含相关教学资料。另外,引用[2]的封面图片来自董付国的书籍,这可能暗示他有相关的PPT资源。 接下来,我应该建议用户查找董付国老师的资料,因为引用中多次提到他,可能他的书籍或课程包含所需的PPT。此外,用户可能需要访问清华大学出版社官或优快云学院,这些地方可能有配套的件。 另外,用户可能需要知道如何下载或获取这些PPT。引用[4]中的链接指向优快云学院的搜索页面,用户可以通过该链接查找相关课程,里面可能包含PPT附件。同时,建议用户通过搜索引擎使用特定关键词查找,比如“Python正则表达式 filetype:ppt”,这样可以快速定位PPT文件。 需要注意的是,确保推荐的资源是可靠和合法的,比如官方出版社或认证的教育平台,避免引导用户到不明来源的站。同时,提醒用户注意版权问题,合法使用教学材料。 最后,生成相关问题,帮助用户进一步探索正则表达式的应用场景、基本语法和常见问题解决方法。这些问题应该用户的需求相关,并引导他们深入学习。</think>### Python正则表达式PPT资料获取建议 根据您的需求,以下是获取Python正则表达式相关PPT件的途径和推荐资源: --- #### 1. **清华大学出版社官方资源** - 引用[2]提到的书籍《Python程序设计实验指导书》(ISBN:9787302525790)作者董付国,清华大学出版社,其配套PPT可能包含正则表达式章节。可访问清华大学出版社官或联系出版社客服查询件资源[^2]。 - **操作建议**:搜索“清华大学出版社 董付国 Python PPT”或访问官教材支持页面。 --- #### 2. **优快云学院课程资料** - 引用[4]提供了董付国老师在优快云学院的课程链接,课程可能包含正则表达式相关PPT附件[^4]。 - **操作步骤**: 1. 访问链接:[优快云学院董付国课程](https://edu.youkuaiyun.com/search?keywords=%E8%91%A3%E4%BB%98%E5%9B%BD&type=0) 2. 搜索课程详情页中的“资料下载”或“配套件”选项。 --- #### 3. **公开分享的PPT资源** - 通过搜索引擎直接查找: - **关键词**:`"Python正则表达式 filetype:ppt"` 或 `"正则表达式 件 site:edu.cn"` - **推荐结果**: - [中国大学MOOC](https://www.icourse163.org/)Python课程的相关章节。 - GitHub上的开源教学仓库(如搜索 `Python regex tutorial`)。 --- #### 4. **自制PPT的建议** - 若未找到合适资源,可结合以下内容自行整理: 1. **正则表达式语法**:元字符(如`.`、`*`、`+`)、分组、断言等[^1][^3]。 2. **Python的`re`模块**:`re.search()`、`re.findall()`、`re.sub()`等方法。 3. **应用案例**:数据清洗、敏感词过滤(参考引用[4])[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值