第6章1-字符串及正则表达式 p63

字符串的常用方法 p63 p64

字符串是不可变数据类型

方法名描述说明
str.lower()将str字符串全部转成小写字母并产生一个新的字符串,str字符串保持不变
str.upper()将str字符串全部转成大写字母并产生一个新的字符串,str字符串保持不变
str.split(sep=None)将str按照指定的分隔符sep进行分隔,产生一个新列表类型,原字符串不变
str.count()sub这个字符串在str中出现的次数
str.find(sub)查询sub这个字符串在str中是否存在,若不存在返回-1,若存在返回sub首次出现的索引
str.index(sub)功能与find相同,区别在于要查询的子串sub不存在时,程序报错
str.startwith(s)查询字符串str是否以子串s开头
str.endwith(s)查询字符串str是否以子串s结尾
str.replace(old,news)使用news字符串替换字符串s中所有old字符串,结果是一个新的字符串
str.center(width,fillchar)字符串str在指定的宽度范围内居中,可以使用fillchar进行填充
str.join(iter)在iter中的每个元素后面都增加一个新的字符串str,如果是包含多个字符串元素的列表,会先添加再把这些都串起来
str.strip(chars)从字符串中去掉左侧和右侧chars中列出的字符串
str.lstrip(chars)从字符串中去掉左侧chars中列出的字符串
str.rstrip(chars)从字符串中去掉右侧chars中列出的字符串

代码实例:

# 大小写相互转换
s1='HelloWorld'
s2=s1.lower()
print(s1)
print(s2)s3=s1.upper()
print(s3)# 字符串的分隔
e_mail='123@qq.com'
lst=e_mail.split('@')
print(e_mail)
print(lst[0],lst[1])# 统计子串'o'出现的次数
print(s1.count('o'))
print(s1.count('m')) # 不存在的字符返回0# 字符串的检索操作
print(s1.find('o')) # 若存在,找到首次出现的索引
print(s1.find('m')) # 若不存在,返回-1print(s1.index('o'))
#print(s1.index('m')) # 'm'不存在于s1中# 判断前缀和后缀
print('demo.py'.endswith('.py'))
print('text.txt'.endswith('.txt'))print(s1.startswith('H'))
print(s1.startswith('P'))s='HelloWorld'
# 字符串的替换
s1=s.replace('o','你好') # 第三个参数是替换几次,若未指定则是替换所有
print(s)
print(s1)
s2=s.replace('o','你好',1)
print(s2)# 字符串在指定的宽度范围内居中
print(s.center(20))
print(s.center(20,'*'))# 去掉字符串左右的空格
s='    Hello    World    '
print(s)
print(s.strip(' ')) # 左右两侧的空格都被去掉了
print(s.lstrip(' ')) # 只取掉左侧的空格
print(s.rstrip(' ')) # 只取掉右侧的空格# 去掉指定的字符
s='dl-HelloWorld'
print(s.strip('ld')) # 与顺序无关,任何一种顺序都可以
print(s.lstrip('ld'))s='dlr-HelloWorld'
print(s.strip('rld'))s='rdl-HelloWorld'
print(s.strip('rld'))

格式化字符串的三种方式 p65

1、占位符

%s:字符串格式
%d:十进制整数格式
%f:浮点数格式
%.1f:小数位数为1的浮点数格式

2、f-string

使用 f'字符串'{} 标明被替换的字符

3、str.format()方法

模板字符串.format(逗号分隔的参数)

代码实例

# 1、使用占位符进行格式化
name='马冬梅'
age=18
score=98.5
print('姓名;%s,年龄:%d,成绩:%f' % (name,age,score))
print('姓名;%s,年龄:%d,成绩:%.1f' % (name,age,score)) # 通过使用%.1f控制小数点位数# 2、f-string python3.6之后可以用
print(f'姓名:{name},年龄:{age},成绩:{score}')# 3、使用字符串的format方法
print('姓名:{0},年龄:{1},成绩:{2}'.format(name,age,score))
print('姓名:{2},年龄:{0},成绩:{1}'.format(age,score,name))

format详细格式控制 p66

格式化字符串的详细格式

:填充对齐方式宽度.精度类型
引导符号用于填充单个字符<左对齐,>右对齐,^居中对齐字符串的输出宽度数字的千位分隔符浮点数小数部分的精度或字符串的最大输出长度整数类型:b\d\o\x\X,浮点数类型:e\E\f\%

代码实例:

s='HelloWorld'
print('{0:*<20}'.format(s))
print('{0:*>20}'.format(s))
print('{0:*^20}'.format(s))print(s.center(20,'*'))# 千位分隔符(只适用于整数和浮点数)
print('{0:,}'.format(123456789))
print('{0:,}'.format(123456789.123456))# 浮点数小数部分的精度
print('{0:.2f}'.format(3.1415926))# 字符串类型表示最大的显示长度
print('{0:.5}'.format('helloworld')) # hello# 整数类型
a=425
print('二进制:{0:b},十进制:{0:d},八进制:{0:o},十六进制:{0:d}'.format(425))# 浮点数类型
b=3.1415926
print('{0:.2f},{0:.2E},{0:.2e},{0:.2%}'.format(b))

字符串的编码和解码 p67

str:字符串类型
bytes:二进制类型

字符串的网络传输:
str -> bytes -> str

str -> bytes是字符串编码的过程
bytes -> str是字符串解码的过程

字符串的编码:
将str类型转换成bytes类型,需要使用到字符串encode()方法

str.endcode(encoding='utf-8',errors='strict/ignore/replace')

字符串的解码:
将bytes类型转换成str类型,需要使用到bytes类型的decode方法

bytes.decode(encoding='utf-8',errors='strict/ignore/replace')

strict,ignore,replace是执行出错的处理方案:
strict:执行出错就报错
ignore:执行出错忽略错误
replace:执行出错时将出错的地方使用?替代

默认是 strict

代码实例:

s='伟大的中国梦'# 编码:str->bytes
s_code=s.encode(errors='replace') # encoding默认是utf-8,因为utf-8中文占3个字节
print(s_code)s_code_gbk=s.encode(encoding='GBK',errors='replace') # gbk编码中一个中文占两个字节
print(s_code_gbk)# 编码中的出错问题
s2='耶♬'s2_code=s2.encode(encoding='GBK',errors='ignore')
print(s2_code)# 出错处理变成严格后,这里会报错
#s2_encode=s2.encode('gbk',errors='strict')s2_encode=s2.encode('gbk',errors='replace')
print(s2_encode)# 解码:bytes->str
print(s_code_gbk.decode('gbk'))
print(s2_encode.decode('gbk'))

数据的验证 p68

指程序对用户输入的数据进行合法性验证

方法名描述说明
str.isdigit()所有字符都是数字(阿拉伯数字)只能是十进制的阿拉伯数字
str.isnumeric()所有字符都是数字,可以是阿拉伯数字,罗马数字,中文一二三四这些
str.isalpha()所有字符都是字母(包含中文字符)
str.isalnum()所有字符都是数字或者字母
str.islower()所有字符都是小写
str.isupper()所有字符都是大写
str.istitle()所有字符都是首字母大写
str.isspace()所有字符都是空白字符

代码实例:

# isdigit() 只识别十进制的阿拉伯数字
print('123'.isdigit())
print('一二三'.isdigit())
print('0b101'.isdigit()) # F
print('Ⅰ'.isdigit()) # F# 是数字就行,罗马数字,阿拉伯数字,中文数字,人民币数字
print('123'.isnumeric())
print('一二三'.isnumeric())
print('0b101'.isnumeric()) # F
print('Ⅰ'.isnumeric()) # T
print('壹'.isnumeric()) # Tprint('-'*100)# 所有字符都是字母(包含中文字符)
print('hello大家'.isalpha())
print('hello大家123'.isalpha()) # F
print('hello大家一二三'.isalpha()) # T
print('hello大家ⅠⅠⅠ'.isalpha()) # Fprint('-'*100)# 所有字符是数字或者字母
print('123'.isalnum())
print('一二三'.isalnum())
print('0b101'.isalnum()) # F
print('Ⅰ'.isalnum()) # T
print('壹'.isalnum()) # Tprint('-'*100)# 判断字符的大小写
print('HelloWorld'.islower())
print('helloworld'.islower())
print('hello你好'.islower()) # T 汉字可以被视为大写也可以被视为小写
print('HELLO你好'.isupper()) # T 汉字可以被视为大写也可以被视为小写print('-'*100)# 所有字符都是首字母大写
print('Hello'.istitle())
print('HelloWorld'.istitle()) # F 因为有一个不是首字母的大写了
print('Helloworld'.istitle()) # T
print('Hello World'.istitle()) # T
print('Hello world'.istitle()) # Fprint('-'*100)# 判断是否都是空白字符,注意制表符和换行符也是空白字符
print('\t'.isspace()) # T
print('\n'.isspace()) # T
print(' '.isspace())

字符串的拼接操作 p69

字符串拼接的几种方式:
1、使用str.ioin()方法进行拼接字符串
2、直接拼接
3、使用格式化字符串进行拼接

代码实例:

s1='hello'
s2='world'# 1、使用加号拼接
print(s1+s2)# 2、使用str.ioin()方法
print(''.join([s1,s2])) # 使用空字符串进行拼接print('*'.join(['hello','world','python'])) # hello*world*python# 3、直接拼接,两个字符串连着写
print('hello''world') # 不能连着写字符串变量# 4、使用格式化字符串进行拼接
print('%s%s' % (s1,s2))
print(f'{s1}{s2}')
print('{0}{1}'.format(s1,s2))

字符串的去重操作 p70

s='helloworldhelloworldasdsdasdas'# 1、字符串拼接  和 not in
new_s=('')
for item in s:if item not in new_s:new_s+=item # 字符串的拼接操作print(new_s)# 2、使用索引和not in
new_s2=''
for i in range(len(s)):if s[i] not in new_s2:new_s2+=s[i]
print(new_s2)# 3、通过集合去重 + 列表排序
new_s3=set(s)
print(new_s3)
lst=list(new_s3)
print(lst)
lst.sort(key=s.index) # 注意这个key=s.index
print(lst)
print(''.join(lst))

正则表达式的简介及相关符号 p71

元字符:具有特殊意义的专用字符
例如 ^$ 分别表示匹配的开始和结束

元字符描述说明举例结果
.匹配任意字符,除了 \np\nytho\tnp,y,t,h,o,\t,n
\w匹配字母,数字,下划线python\n123p,y,t,h,i,n,1,2,3
\W匹配非(字母、数字、下划线)pythoin\n123\n
\s匹配任意空白字符python\t123\t
\S匹配任意非空白字符python\t123p,y,t,h,o,n,1,2,3
\d匹配任意十进制数python\t123123

限定符:限定匹配的次数。

限定符描述说明举例结果
?匹配前面的字符0次或者1次colou?r可以匹配color或者colour
+匹配前面的字符1次或多次colou+r可以匹配colourcolouu...r
*匹配前面的字符0次或多次colou*r可以匹配colorcolouu...r
{n}匹配前面的字符n次colou{2}r可以匹配colouur
{n,}匹配前面的字符最少n次colou{2,}r可以匹配colouurcolouuu...r
{n,m}匹配前面的字符最少n次,最多m次colou{2,4}r可以匹配colouurcolouuurcolouuuur

其他字符

其他字符描述说明举例结果
区间字符[]匹配[]中所指定的字符[.?!] [0-9]匹配标点符号:点号,问号,感叹号;匹配0到9数字
排除字符^匹配不在[]中指定的字符[^0-9]匹配除0到9的字符
选择字符|用于匹配|左右的任意字符\d{18}|\d{15}匹配18位或者15位数字
转义字符同python中的转义字符\..作为普通字符来使用
[\u4e00-\u9fa5]匹配任意一个汉字
分组()改变限定符的作用six|fourth(six|four)th一个是匹配sixfourth,一个是匹配sixthfourth

re模块中的match函数的使用 p72

re模块:python中的内置模块
用于实现python中的正则表达式操作

函数功能描述
re.match(pattern,string,flags=0)用于从字符串的开始位置进行匹配,若起始位置匹配成功,结果为Match对象,否则结果为None
re.search(pattern,string,flags=0)用于在整个字符串中搜索第一个匹配的值,若匹配成功,结果为Match对象,否则结果为None
re.findall(pattern,string,flags=0)用于在整个字符串中搜索所有符合正则表达式的值,结果是一个列表类型
re.sub(pattern,repl,string,count,flags=0)用于实现对字符串中指定子串的替换
re.split(pattern,string,maxsplit,flags=0)与字符串中的split()方法功能相同,都是分隔字符串

代码实例:

import repattern='\d\.\d+'                           # 模式字符串,注意\.就是表示'.'字符
s='I study Python 3.11 every day'           # 待匹配字符串
match=re.match(pattern,s,re.I)
print(match) # match是从开始的位置进行匹配的,开头就不适合s2='3.11Python I study every day'
match2=re.match(pattern,s2,re.I)
print(match2) # <re.Match object; span=(0, 4), match='3.11'>print('匹配值的起始位置:',match2.start())
print('匹配值的结束位置:',match2.end())
print('匹配区间的位置元素:',match2.span())
print('待匹配的字符串:',match2.string)
print('匹配的数据:',match2.group())

re模块中search函数和findall函数的使用 p73

search函数

找到第一个满足模式的

import repattern='\d\.\d+'
s='I study Python3.11 every day Python2.7 I love you'
match=re.search(pattern,s) # 有两个满足的,但是search只找到第一个满足条件的
s2='4.10 Python I study every day'
match2=re.search(pattern,s2)
s3='Python I study every day'
match3=re.search(pattern,s3)
print(match)
print(match2)
print(match3)print(match.group())
print(match2.group())

findall函数

找到所有满足条件的
结果是列表类型

import repattern='\d\.\d+'
s='I study Python3.11 every day Python2.7 I love you'
s2='4.10 Python I study every day'
s3='Python I study every day'lst=re.findall(pattern,s)
lst2=re.findall(pattern,s2)
lst3=re.findall(pattern,s3)print(lst)
print(lst2)
print(lst3)

re模块中sub函数和split函数的使用 p74

import repattern='黑河|破解|反爬'
s='我想学习python,想破解一些VIP视频,Python可以实现无底线反爬吗'new_s=re.sub(pattern,'xxx',s)
print(new_s)s2='https://www.google.com.hk/search?q=jl&newwindow=1&sca_esv=593555560&rlz=1C1GCEA_enCN982CN982&ei=CWCJZbBh_tHaug-VmamoCA&ved=0ahUKEwjwiYbttqqDAxX-qFYBHZVMCoUQ4dUDCBA&uact=5&oq=jl'
pattern2='[?&]'
lst=re.split(pattern2,s2)
print(lst)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/579398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java-Maven3.9.6:Maven依赖管理 / 安装-配置-使用

一、理解Maven Maven是一个开源的项目管理工具&#xff0c;主要用于构建和管理Java项目、依赖管理和文档生成&#xff0c;它可以自动下载所需的依赖库&#xff0c;并自动构建整个项目。理解Maven需要了解以下几个方面&#xff1a; 1. 项目对象模型&#xff08;Project Object…

7.2 uvm_resource_db in UVM

uvm_resource_db是一个类型参数化 type-parameterized的类&#xff0c;它是资源数据库顶部的一个方便层(convenience layer)。这个便利层简化了对低级数据库的访问&#xff0c;并且没有添加新功能。因此&#xff0c;uvm_resource_db不是从uvm_resource类派生的。以下uvm_resour…

Scala安装

Scala安装使用 windows安装,配置环境变量 以下载Scala2.11为例&#xff0c;操作在Windows中安装Scala。 官网下载scala2.11&#xff1a;All Available Versions | The Scala Programming Language下载好后安装。双击msi包安装,记住安装的路径。配置环境变量&#xff08;和配…

mvtec3d

以bagel为例&#xff0c;其中有calibration、 bagel # 百吉圈(硬面包)calibrationcamera_parameters.jsontestcombinedgt # 缺陷部位的分割剪影pngrgb # 原图pngxyz # tiffcontamination # 污染物同上crack同上good同上 hole同上 traingoodrgbxyzvalidationgood同traincla…

【快刊录用】Springer旗下2区,1个21天录用,12天见刊!

网络安全类SCIE ☑️期刊简介&#xff1a;IF&#xff1a;4.0-5.0&#xff0c;JCR2区&#xff0c;中科院3区 ☑️检索情况&#xff1a;SCIE 在检&#xff0c;正刊 ☑️征稿领域&#xff1a;提高安全性和隐私性的边缘/云的智能方法的研究&#xff0c;如数字孪生等 ☑️录用案…

【Qt-Qss-Style】

Qt编程指南 ■ Qss■ Style■ setStyleSheet ■ style.qss■ border■ 去除弹框背景圆角■ QProgressBar样式表 ■ Qss Qt 支持很多种常见 符号 “>”代表直属子部件&#xff0c;说明两个控件之间是父子关系。 “#”代表后面的字段是前面控件类型的名称&#xff0c;当然也可…

【小白专用】Apache下禁止显示网站目录结构的方法 更新23.12.25

给我一个网站地址&#xff0c;我点开后显示的是目录格式&#xff0c;把网站的目录结构全部显示出来了 这个显示结果不正确&#xff0c;不应该让用户看到我们的目录结构 配置文件的问题,apache配置文件里有一项可以禁止显示网站目录的配置项&#xff0c;禁止掉就好了 在apache…

MySQL集群架构搭建以及多数据源管理实战

MySQL集群架构搭建以及多数据源管理实战 ​ 数据库的分库分表操作&#xff0c;是互联网大型应用所需要面对的最核心的问题。因为数据往往是一个应用最核心的价值所在。但是&#xff0c;在最开始的时候&#xff0c;需要强调下&#xff0c;在实际应用中&#xff0c;对于数据库&a…

HarmonyOS应用抓包实战

Charles抓包原理 Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器&#xff0c;当浏览器连接Charles的代理访问互联网时&#xff0c;Charles可以监控浏览器发送和接收的所有数据。 在开发OpenHarmony/HarmonyOS应用开发时&#xff0c;我们使用的是ohos/axios来进行网络…

jsp页面bootstrap表格设置页面跳转一直在底部

首先介绍一下bootStrap和bootStrap table&#xff1a; bootStrap: Bootstrap是Twitter推出的一个用于前端开发的开源工具包。 它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。 bootStrap table: Bootstrap table 是一款基于 Bootstrap 的 jQue…

审视AI Agent:追捧、落地,和2024年的To B破局点

“十个AI应用里面&#xff0c;五个办公Agent&#xff0c;三个AIGC&#xff0c;还有两成是回春的数字人。”那么&#xff0c;Agent到底是不是大模型的AGI终局产品&#xff1f; 作者|斗斗 编辑|皮爷 出品|产业家 今年4月份&#xff0c;斯坦福和谷歌的研究者共同创建了一个…

QT小技巧 - 使用QMovie进行gif切帧

简介 使用QMovie 将 gif 进行切帧&#xff0c; magick 进行合并代码 QString gifPath "E:\\workspace\\qt\\gif2imgs\\203526qre64haq3ccoobqi.gif"; // 你的图片QMovie movie(gifPath); movie.setCacheMode(QMovie::CacheNone);qDebug() << movie.frameCou…

腾讯云上mysql连接不上

腾讯云服务器默认没开放&#xff0c;3306端口。 1.去腾讯云控制台 2.找到自己的服务器 3选择防火墙 4.添加规则 至此完事了。

Java学习:Comparator和Comparable

一.Comparator的使用 1.Arrays.sort 给基本类型的数组进行排序的方法&#xff0c;默认是实现升序&#xff0c;也可以通过方法写匿名类自定义实现升降序排序。 代码&#xff1a; Arrays.sort(arr,new Comparator<Integer>(){Overridepublic int compare(Integer o1, In…

代码随想录算法训练营第二十六天 | 回溯算法part3

目录 力扣题目 力扣题目记录 39. 组合总和 40.组合总和II 补充 131.分割回文串 优化 总结 力扣题目 用时&#xff1a;未知 1、39. 组合总和 2、40.组合总和II 3、131.分割回文串 力扣题目记录 39. 组合总和 可以重复&#xff0c;所以startIndex的处理和之前不同剪枝…

CentOS7之开启ssh远程登录

参考&#xff1a;https://www.cnblogs.com/travis-li/p/12550370.html cd /etc/ssh/ # 修改配置 vim sshd_config# 开启服务 sudo service sshd start# 检查 ps -e | grep sshd# 开机自启 systemctl enable sshd.service# 查看(验证)开机自启服务 [rootlocalhost liangshijie]…

【已解决】Excel“打开密码”在哪里设置?

Excel可以设置“打开密码”&#xff0c;设置后只要打开表格就会提示文件有密码保护&#xff0c;需要输入密码&#xff0c;才能查看表格里面的内容。 那Excel“打开密码”在哪里设置呢&#xff1f;Excel提供了两种路径可以选择。 选择一、直接在Excel里设置 操作步骤&#xff1…

facebook广告企业户对账户有什么要求

Facebook广告企业户对账户的要求如下&#xff1a; 企业账户只能通过代理商开户&#xff0c;需提供营业执照&#xff0c;个人FB账号&#xff0c;FB主页。广告充值&#xff0c;要通过代理商充值。企业广告账户操作要通过Facebook BM平台授权&#xff0c;开户前需自己先创建BM平台…

市场复盘总结 20231226

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整 昨日回顾&#xff1a; SELECT CODE,成交额排名,净流入排名,代码,名称,DDE大单金额,涨幅,主力净额,DDE大单净量,CONVERT(DATETIME, 最后封…

EN 438-7-2005 高压装饰层压板(HPL)CE认证

热固性树脂浸渍纸高压装饰层压板是指用氨基树脂浸渍的表层纸、装饰纸和用酚醛树脂浸渍的底层纸&#xff0c;层积后在高压下热压而成的一种装饰材料&#xff0c;简称高压装饰板&#xff08;HPL&#xff09;&#xff0c;具有防火&#xff0c;防潮&#xff0c;抗菌等性能&#xff…