版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
口令:RAPID708第4章
字符串、元组和字典学习目标掌握字符串格式化的使用。掌握字符串常用方法。掌握使用正则表达式进行数据清洗。掌握元组的特性和使用。掌握字典的特性和使用。字符串最开始的字符串编码是美国标准信息交换码(ASCII),它采用1个字节对字符进行编码,最多只能表示256个符号(10个数字、26个大写英文字母、26个小写英文字母及一些其他符号)。随着信息技术的发展和信息交互的需要,各国的文字都需要进行编码,不同的应用领域和场合对字符串编码的要求也略有不同,此时又分别设计多种不同的编码格式,常见的主要有UTF-8、UTF-16、UTF-32、GB2312、GBK、CP936、base64、CP437等,Python3.X默认编码格式是UTF-8。字符串格式化在Python编程中字符串输入与输出可以使用字符串格式化的方式进行操作。使用格式如下:%[Flags][Width].[Precision]Type说明:“%”:是转换说明符的开始。“Flags”:(可选项)可供选择的值有:“+”:正数前加正号,负数前加负号。“-”:左对齐。“”:正数前加空格。“0”:位数不够用“0”填充空。“Width”:(可选项)字段占有宽度。“.Precision”:(可选项)精度,小数点后保留的位数。“Type”:转换类型(如表4-1所示)。字符串格式化常用格式字符:字符串格式化>>>num=3438>>>buf="%o"%num>>>buf'6556'>>>buf="%X"%num>>>buf'D6E'>>>buf="%f"%num/345>>>buf="%f"%(num/345)>>>buf'9.965217'>>>buf="%e"%(num/345)>>>buf'9.965217e+00'字符串方法字符串常用方法:find()方法>>>str1="HelloPythonIlikeyou">>>str1.find("like")15count()方法>>>str1="HelloWorld,HelloPython.">>>str1.count("Hello")2split()方法>>>str1="1+2+3+4+5+6+7">>>str1.split("+")['1','2','3','4','5','6','7']join()方法>>>str1=["1","2","3","4","5","6","7"]>>>sep="+">>>sep.join(str1)'1+2+3+4+5+6+7'replace()方法>>>str1="Hello,Python!">>>str1.replace("Python","World")'Hello,World!'strip()方法>>>str1="HelloWorld" #删除空格>>>str1.split()['Hello','World']>>>str1.split("H") #删除指定字符“H”['','elloWorld']正则表达式正则表达式是字符串处理的有力技术,通常被用来检索、替换那些符合某个规则的文本等,例如,网络爬虫、文稿整理或数据筛选等。在Python中提供了“re”模块来支持正则表达式。正则表达式在匹配文本内容时有两种匹配模式。一种是贪婪模式,尽可能的匹配更多的内容,另一种是非贪婪模式,总是尝试匹配尽可能少的字符。例如,使用正则表达式“adc*?”如果用于查找“abcdefg”,使用贪婪模式有可能将找到“abcdefghi”,而使用非贪婪模式查找就有可能找到“abcd”。Python中数量词默认使用贪婪模式。正则表达式正则表达式常用语法:格式字符说明.除换行符以外的任意单个字符\w匹配单词字符,即[a-zA-Z0-9]\W匹配非单词字符集,例如‘*’\d匹配数字,即[0-9]\D匹配非数字\s匹配空白字符\S匹配非空白字符*匹配前一个字符0次或者任意多次+匹配前一个字符1次或者任意多次?匹配前一个字符0次或者1次{m}匹配前一个字符m次{m,n}匹配前一个字符最少m次,最多n次*?非贪婪模式匹配前一个字符0次或者任意多次+?非贪婪模式匹配前一个字符1次或者任意多次??非贪婪模式匹配前一个字符0次或者1次{m,n}?非贪婪模式匹配前一个字符最少m次,最多n次^匹配字符串开头$匹配字符串结尾\A制定的字符串匹配必须出现在开头\Z制定的字符串匹配必须出现在结尾|匹配左右任意一个表达式,相当于“或”的含义()匹配一个分组,括号中为该分组所需匹配的内容\<number>引用匹配编号为<number>的分组中的字符串(?P<group_name>)为匹配分组制定特定的组名(?P=<group_name>)引用特定组名的匹配字符串正则表达式“re”模块的常用方法:方法功能说明compile(pattern[,flags])创建模式对象escape(string)将字符串中所有特殊正则表达式字符转义findall(pattern,string[,flags])返回包含字符串中所有与给定模式匹配的项的列表finditer(pattern,string,flags=0)返回包含所有匹配项的迭代对象,其中每个匹配项都是match对象fullmatch(pattern,string,flags=0)尝试把模式作用于整个字符串,返回match对象或Nonematch(pattern,string[,flags])从字符串的开始处匹配模式,返回match对象或Nonepurge()清空正则表达式缓存search(pattern,string[,flags])在整个字符串中寻找模式,返回match对象或Nonesplit(pattern,string[,maxsplit=0])根据模式匹配项分隔字符串sub(pat,repl,string[,count=0])将字符串中所有与pat匹配的项用repl替换,返回新字符串,repl可以是字符串或返回字符串的可调用对象,该可调用对象作用于每个匹配的match对象subn(pat,repl,string[,count=0])将字符串中所有pat的匹配项用repl替换,返回包含新字符串和替换次数的二元元组,repl可以是字符串或返回字符串的可调用对象,该可调用对象作用于每个匹配的match对象正则表达式match()方法匹配:importre#将正则表达式编译成pattern对象pattern=pile(r'Hello')#使用Pattern匹配文本,获得匹配结果,无法匹配时将返回Nonematch=pattern.match('HelloPython')#判断是否匹配到信息ifmatch: #使用Match获得分组信息print(match.group())正则表达式match()方法匹配:importre#使用正则表达式匹配文本,获得匹配结果,无法匹配时将返回Nonematch=re.match(r'(.*)Python','HelloPython',re.S)#判断是否匹配到信息ifmatch: #使用Match获得分组信息print(match.group())#输出符合匹配要求的所有匹配项print(match.group(1))#输出符合匹配要求的特定项正则表达式search()方法匹配:importre#使用正则表达式匹配文本,获得匹配结果,无法匹配时将返回Nonematch1=re.search(r'is(.*)learn','Lifeistooshort,IlearnPython',re.S)match2=re.match(r'is(.*)learn','Lifeistooshort,IlearnPython',re.S)#判断是否匹配到信息ifmatch1: print(match1.group())#输出符合匹配要求的所有匹配项print(match1.group(1))#输出符合匹配要求的特定项else:print("match1None!")ifmatch2: print(match2.group())#输出符合匹配要求的所有匹配项print(match2.group(1))#输出符合匹配要求的特定项else:print("match2None!")正则表达式findall()方法匹配:importrenum=re.findall(r'\d','one1two2three3four4')print(num)正则表达式sub()方法匹配:importrephone="2018-01-01-9527#ThisisPhoneNumber"#将‘#’号以后的数据用''替换num=re.sub(r'#.*$',"",phone)print("PhoneNum:",num)#将所有的非数字数据用''替换num=re.sub(r'\D',"",phone)print("PhoneNum:",num)元组元组和列表操作类似,但是元组属于不可变序列,元组创建后只可以元素覆盖不可以修改元素。元组的定义方式和列表相同,但定义时所有元素是放在一对圆括号“()”中,用逗号“,”分隔元素值。>>>1,2,3(1,2,3)>>>(1,2,3)(1,2,3)#只有一个值的元组操作>>>55>>>(5)5>>>5,(5,)>>>(5,)(5,)>>>tuple("123")('1','2','3')>>>tuple([1,2,3])(1,2,3)>>>x=1,2,3,4>>>x[:3](1,2,3)>>>x[2]3字典字典的基本操作:创建字典>>>name_id={"Liang":"0001","Ran":"0002","Jie":"0003"}dict()函数>>>students=dict(name="jie",age=23)>>>students{'name':'jie','age':23}>>>students=[("name","jie"),("age",23)]>>>dict(students){'name':'jie','age':23}读取字典某个元素>>>students=[("name","jie"),("age",23)]>>>dict(students){'name':'jie','age':23}>>>students['name']'jie'读取所有的键值对列表>>>students=dict(name="jie",age=23)>>>foriteminstudents.items(): print(item)('name','jie')('age',23)添加和修改字典元素>>>students=dict(name="jie",age=23)>>>students["id"]=9527>>>students{'id':9527,'name':'jie','age':23}>>>students["age"]=30>>>students{'id':9527,'name':'jie','age':30}字典是可变序列是一种映射类型,字典中的键可以为任意不可变数据,比如整数、实数、复数、字符串、元组等。字典字典常用方法:clear()方法>>>students={"id":9527,"name":"jie","age":23}>>>students{'id':9527,'name':'jie','age':23}>>>students.clear()>>>students{}copy()方法>>>students1={"id":9527,"name":"jie","age
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业废弃物能源化行业营销策略方案
- 磁性编码身份鉴别手环产品供应链分析
- 药用木炭项目营销计划书
- 医用身体康复仪产品供应链分析
- 射频识别RFID阅读器产品供应链分析
- 绢纺机械市场分析及投资价值研究报告
- 电热翻转烤肉器项目运营指导方案
- 制饮料用机器人出租行业相关项目经营管理报告
- 宝石抛光行业市场调研分析报告
- 观测仪器市场发展前景分析及供需格局研究预测报告
- Unit+8大单元整体教学设计 人教版英语九年级全册
- 江苏省盐城市建湖县2023-2024学年八年级上学期期中生物模拟试题
- 点火源的种类及安全控制对策
- 工程未验收证明书范本
- 污水处理工程设备安装验收记录
- 校园足球特色学校足球校本课程教材
- 变电站施工站班会记录表
- 储能项目用户侧投资测算表
- 古钱币优秀课件
- 办公室工作流程图课件
- 痛风专业知识讲座
评论
0/150
提交评论