零基础学Python|Python基础知识学习第四天

简介: 零基础学Python|Python基础知识学习第四天

1.字符串

1.1 拼接字符串

可以使用+号拼接字符串,被拼接的双方必须都是字符串,如果不是,可以使用str()来进行转换。

mystr = "i love you"
mystr2 = "我爱你"
mystr3 = 123
newstr = mystr+mystr2+str(mystr3)

1.2 计算字符串的长度

在python中,数字、英文、小数点、下划线和空格点一个字节。一个汉字可能占2-4个字节,汉字在GBK/GB2312编码中占2个字节,在UTF-8/Unicode中一般占3个字节(或4个字节)。

mystr = "亲爱的孩子,i love you"
print(len(mystr))
#输出结果 16  ,默认中文也看作是一个字符

如果想让汉字占三个字节,可以使用encode编码后计算:

#计算字符串长度 指定编码
mystr = "亲爱的孩子,i love you"
print(len(mystr.encode()))
#输出结果 28  ,汉字及中文符号都被解析为3个字节
#计算字符串长度 指定编码gbk  默认的
mystr = "亲爱的孩子,i love you"
print(len(mystr.encode('gbk')))
#输出结果 22,中文占2个字节

1.3 截取字符串

可以切片的方式来截取

string[start:end:step]
#字符串截取
mystr = "亲爱的孩子,i love you"
print(mystr[2:5:2])
#字符串截取
mystr = "亲爱的孩子,i love you"
try:
    newstr = mystr[30]
except IndexError:
    print("指定的索引不存在")

1.4 分割字符串

python中使用split来进行字符串分割:

str.split(sep,maxsplit)
str:进行分割的字符串
sep:指定分割符,不指定默认为空字符
maxsplit:可选参数,指定分割次数
返回值:分隔后的字符串列表

1.5 检索字符串

count():检索指定字符串在另一个字符串中出现的次数。

str.count(sub[,start[,end]])
str:表示原字符串
sub:表示要检索的子字符串
start:检索范围开始
end:检索范转结束

示例:

#字符串检索
mystr = "this is my daughter"
print(mystr.count("my"))

find():检索指定字符串是否存在,如不存在返回-1,如存在返回所在位置索引

#字符串检索
mystr = "this is my daughter"
print(mystr.find("my"))

index():检索指定字符串是否存在,如不存在报异常,如存在返回所在位置索引

#字符串检索
mystr = "this is my daughter"
print(mystr.index("my"))

startswith():用于检索字符串是某以某个子字符串开头,是则返回True,不是则返回False

str.startswith(prefix[,start[,end]])

endswith():用于检索字符串是某以某个子字符串结尾,是则返回True,不是则返回False

str.endswith(prefix[,start[,end]])

1.6 字符串大小写转换

lower():用于将字符串中的大写转换为小写

upper():用于将字符串中的小写转换为大写

str.lower()
str.upper()

1.7 去除字符串中的空格和特殊字符

strip():将字符串左右两边的空格和特殊字符去除

lstrip():将字符串左边的空格和特殊字符去除

rstrip():将字符串右边的空格和特殊字符去除

str.strip([chars])
str.lstrip([chars])
str.rstrip([chars])
#chars 为指定要去除的字符,如不指定,则默认为空格
#字符串空格和特殊字符去除
mystr = "@!this is my daughter!@"
print(mystr.strip("@!"))

1.8 格式化字符串

格式化字符串是指定制定一个模板,在这个模板中预留几个空位,然后再根据需要填上相应的内容。这些空位需要通过指定的符号标记(也称为占位符),而这些符号还不会显示出来。在Python中,格式化字符串有以下两种方法。

1.8.1 使用%操作符

'%[-][+][0][m][.n]格式化字符'%exp

参数说明:

-:可选参数,用于指定左对齐,正数前方无符号,负数前面加负号
+:可选参数,用于指定右对齐,正数前方加正号,负数前面加负号
0:可选参数,表示右对齐,正数前方无符号,负数前方加负号,用0填充空白处(一般与m参数一起使用)
m:可选参数,表示占有宽度
.n:可选参数,表示小数点后保留的位数
格式化字符:用于指定类型,其值如下图所示
exp:要转换的项。如果要指定的项有多个,可以使用元组表示,但不能使用列表。

2.正则表达式

正则表达式是用于查找符合某些规则的字符串的一种工具。

2.1 行定位符

行定位符就是描述子串的边界。^表示行的开始,$表示行的结尾。

^tm:表示查找以tm开头的字符串
tm$:表示查找以tm结尾的字符串
tm:匹配字符串中任意位置的tm串

2.2 元字符

常用元字符如下图所示:

2.3 限定字符

限定字符是用来配合元字符一起使用,限定某些字符或数字出现的次数的字符。常用限定符如下图所示:

2.4 字符类

如果要查找没有预定义的字符集合,使用[ ]来列出想要匹配的任意字符即可,比如想匹配,a,e,i,o,u 则只需要在中括号列出即可,[a,e,i,o,u]即可实现对这五个字符的匹配操作。[0-9]表示匹配0-9中的任意数字,作用和\d相同,[a-z0-9A-Z_]则和\w作用一样。如果想匹配任意一个汉字,可以使用 [\u4e00-\u9fa5] ,如果想连续匹配多个汉字,可以使用 [\u4e00-\u9fa5]+ 来表示。

2.5 排除字符

^作为排除字符使用,比如[ ^a-zA-Z] 表示匹配的不是一个字母字符。

2.6 选择字符

如果规则中包含选择性的条件判断逻辑,可以使用|符号来进行或的处理。

(^\d{15}$)|(^\d(18)$)|(^\d(17)$)(\d|X|x)$

该示例中是用来匹配身份证的,表示匹配15位数或18位数字,或前面17位数字和最后一位,最后一位可以是数字,也可以是大写X和小写x.

2.7 转义字符

用于将一个字符在表达式中变成普通字符,以免发生岐义,比如元字符 . 在表达式中表示匹配任意字符,而我们如果就是想匹配 . 就需要使用转义字符 \ 来进行处理。

[1-9]{1,3}\.[1-9]{1,3}\.[1-9]{1,3}\.[1-9]{1,3}   #表示匹配IP地址,如  127.0.0.1

2.8 分组

小括号的作用有两个,一个是改变限定符的作用范围。如(six|four)th 表示匹配sixth和fourth,如果不加小括号就表示匹配six或fourth了。

小括号的第二个作用就是分组,也就是所谓的子表达式。比如:(\.[0-9]{1,3}){3},就是对(\.[0-9]{1,3})进行重复3次的操作。

2.9 Python中使用正则表达式

正则表达式是一种规则,很多语言中都可以使用。Python在使用正则表达式时,是把它当做一个模板字符串来使用的。在使用时,可以在模板字符串前加r 或R来表示当前模板字符串是原生字符串。

r'\bm\w*\b'

Python中提供了re模块,用于实现正则表达式的操作。在实现时,可以使用re模块提供的方法(search()、 macth()、findall()等)进行字符串处理,也可以先使用re模块的compile()方法将模式字符串转换为正则表达式对象,然后再使用该正则表达式对象的相关方法来操作字符串。re模块在使用时,需要先应用import语句引入,具体的代码如下:

import re

2.9.1 匹配字符串

使用match()方法匹配字符串:

match()方法用于从字符串的开始处进行匹配,如果在起始位置匹配成功,则返回Match对象,否则返回None,语法格式如下:

re.match(pattern,string,[flags])
pattern: 表示模式字符串,由要匹配的正则表达式转换而来。
string: 表示要匹配的字符串。
flags: 可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写。常用的标志如下:

示例:匹配字符串是否以"mr_"开头,不区分字母大小写:

import re
pattern = r'mr_\w+'  #模式字符串
string = 'MR_SHOP mr_shop'   #要匹配的字符串
match = re.match(pattern,string,re.I)   #匹配字符串,不区分大小写
print(match)  #输出匹配结果
string = '项目名称MR_SHOP mr_shop'  
match = re.match(pattern,string,re.I) #匹配字符串,不区分大小写
print(match)

打印输出的Match对象,提供了一些方法用于获得匹配值的位置和匹配数据。

start():获取匹配值的起始位置

end():获取匹配值的结束位置

span():获得匹配位置的元组

string属性:获得要匹配的字符串

示例:

import re
pattern = r'mr_\w+'  #模式字符串
string = 'MR_SHOP mr_shop'   #要匹配的字符串
match = re.match(pattern,string,re.I)   #匹配字符串,不区分大小写
print('匹配值的起始位置:'+match.start())
print('匹配值的结束位置:'+match.end())
print('匹配位置的元组:'+match.span())
print('要匹配的字符串:'+match.string)
print('匹配数据:'+match.group())

使用search()方法匹配字符串:

search()方法用于从字符串中搜索第一个匹配的值,如果在起始位置匹配成功,则返回Match对象,否则返回None,语法格式如下:

re.search(pattern,string,[flags])
pattern: 表示模式字符串,由要匹配的正则表达式转换而来。
string: 表示要匹配的字符串。
flags: 可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写。常用的标志如上图所示,同match方法。

示例:匹配字符串是否以"mr_"开头,不区分字母大小写:

import re
pattern = r'mr_\w+'  #模式字符串
string = 'MR_SHOP mr_shop'   #要匹配的字符串
match = re.search(pattern,string,re.I)   #匹配字符串,不区分大小写
print(match)  #输出匹配结果
string = '项目名称MR_SHOP mr_shop'  
match = re.search(pattern,string,re.I) #匹配字符串,不区分大小写
print(match)

使用findall()方法匹配字符串:

findall()方法用于从字符串中搜索所有匹配的值,并以列表形式返回,如果匹配成功,则返回成功则匹配包含匹配结构的列表。否则返回空列表,语法格式如下:

re.findall(pattern,string,[flags])
pattern: 表示模式字符串,由要匹配的正则表达式转换而来。
string: 表示要匹配的字符串。
flags: 可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写。常用的标志如上图所示,同match方法。
import re
pattern = r'mr_\w+'  #模式字符串
string = 'MR_SHOP mr_shop'   #要匹配的字符串
match = re.findall(pattern,string,re.I)   #匹配字符串,不区分大小写
print(match)  #输出匹配结果
string = '项目名称MR_SHOP mr_shop'  
match = re.findall(pattern,string,re.I) #匹配字符串,不区分大小写
print(match)

在使用时,如果指定的模式字符串中,包含分组,则返回与分组匹配的文本列表。

import re
pattern =r'[1-9]{1,3}(\.[0-9]{1,3}){3}'  #模式字符串
str1 = '127.0.0.1  192.168.2.6'   #要匹配的字符串
match = re.findall(pattern,str1)  #进行模式匹配
print(match)

结果输出:

['.1', '.6']

原因就是模式字符串是出现了分组,根据分组 (.[0-9]{1,3}) 来进行匹配。如果想获取整个模式字符串的匹配,可以将整个模式字符串使用一对小括号进行分组,然后在获取结果时,只取返回值列表的每个元素的第一个元素。

示例:

import re
pattern =r'([1-9]{1,3}(\.[0-9]{1,3}){3})'  #模式字符串
str1 = '127.0.0.1  192.168.2.6'   #要匹配的字符串
match = re.findall(pattern,str1)  #进行模式匹配 会得到符合两个分组表达式的列表
print(match)
for item in match:
    print(item[0])

2.9.2 替换字符串

sub()方法用于实现字符串替换:

re.sub(pattern,repl,string,count,flags)

参数说明:

* pattern: 表示模式字符串,由要匹配的正则表达式转换而来。
* repl: 表示要替换的字符串。
* string: 表示要替换的原始字符串。
* count: 表示模式匹配后替换的最大次数,默认值为0,表示替换所有的匹配。
* flags: 可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写。常用的标志如上图所示,同match方法。

示例:阿尔隐藏中奖信息后的手机号码

import re 
pattern = r'1[34578]\d{9}'   #定义要替换的模式字符串
string = '中奖号码为:84978981 联系电话为:13611111111'
result = re.sub(pattern,'1xxxxxxxxxx',string)   #替换字符串
print(result)

2.9.3 分割字符串

split()方法用于实现根据正则表达式分割字符串,并以列表的形式返回,其作用与字符串对象的split()方法类似,所不同的就是分割字符由模式字符串指定。语法如下:

re.split(pattern,string,[maxsplit],[flags])

参数说明:

* pattern: 表示模式字符串,由要匹配的正则表达式转换而来
* string :表示要匹配的字符串.
* maxsplit: 可选参数,表示最大的拆分次数。
* flags: 可选参数:表示标志位,用于控制匹配方式,如是否区分字母大小写。

示例:

import re
pattern = r'[?|&]'   #定义分割符
url = 'http://www.znzn.com/login.jsp?username="mr"&pwd="mrsoft"'
result = re.split(pattern,url)  #分割字符串
print(result)


相关文章
|
4月前
|
安全 数据安全/隐私保护 Python
Python学习的自我理解和想法(27)
本文记录了学习Python第27天的内容,主要介绍了使用Python操作PPTX和PDF的技巧。其中包括通过`python-pptx`库创建PPTX文件的详细步骤,如创建幻灯片对象、选择母版布局、编辑标题与副标题、添加文本框和图片,以及保存文件。此外,还讲解了如何利用`PyPDF2`库为PDF文件加密,涵盖安装库、定义函数、读取文件、设置密码及保存加密文件的过程。文章总结了Python在处理文档时的强大功能,并表达了对读者应用这些技能的期待。
|
2月前
|
算法 IDE 测试技术
python学习需要注意的事项
python学习需要注意的事项
184 57
|
2月前
|
JSON 数据安全/隐私保护 数据格式
拼多多批量下单软件,拼多多无限账号下单软件,python框架仅供学习参考
完整的拼多多自动化下单框架,包含登录、搜索商品、获取商品列表、下单等功能。
|
2月前
|
机器学习/深度学习 数据安全/隐私保护 计算机视觉
过三色刷脸技术,过三色刷脸技术教程,插件过人脸python分享学习
三色刷脸技术是基于RGB三通道分离的人脸特征提取方法,通过分析人脸在不同颜色通道的特征差异
|
3月前
|
数据采集 存储 监控
抖音直播间采集提取工具,直播间匿名截流获客软件,Python开发【仅供学习】
这是一套基于Python开发的抖音直播间数据采集与分析系统,包含观众信息获取、弹幕监控及数据存储等功能。代码采用requests、websockets和sqlite3等...
|
4月前
|
存储 搜索推荐 算法
Python学习的自我理解和想法(28)
本文记录了学习Python第28天的内容——冒泡排序。通过B站千锋教育课程学习,非原创代码。文章详细介绍了冒泡排序的起源、概念、工作原理及多种Python实现方式(普通版、进阶版1和进阶版2)。同时分析了其时间复杂度(最坏、最好、平均情况)与空间复杂度,并探讨了实际应用场景(如小规模数据排序、教学示例)及局限性(如效率低下、不适用于高实时性场景)。最后总结了冒泡排序的意义及其对初学者的重要性。
|
4月前
|
Python
Python学习的自我理解和想法(26)
这是一篇关于使用Python操作Word文档的学习总结,基于B站千锋教育课程内容编写。主要介绍了通过`python-docx`库在Word中插入列表(有序与无序)、表格,以及读取docx文件的方法。详细展示了代码示例与结果,涵盖创建文档对象、添加数据、设置样式、保存文件等步骤。虽为开学后时间有限下的简要记录,但仍清晰梳理了核心知识点,有助于初学者掌握自动化办公技巧。不足之处欢迎指正!
|
5月前
|
索引 Python
Python学习的自我理解和想法(24)
本文记录了学习Python操作Excel的第24天内容,基于B站千锋教育课程。主要介绍openpyxl插件的使用,包括安装、读取与写入Excel文件、插入图表等操作。具体内容涵盖加载工作簿、获取单元格数据、创建和保存工作表,以及通过图表展示数据。因开学时间有限,文章简要概述了各步骤代码实现,适合初学者参考学习。如有不足之处,欢迎指正!
|
4月前
|
Python
Python学习的自我理解和想法(25)
这是一篇关于Python操作Word文档(docx)的教程总结,基于B站千锋教育课程学习(非原创代码)。主要内容包括:1) docx库插件安装;2) 创建与编辑Word文档,如添加标题、段落、设置字体样式及保存;3) 向新或现有Word文档插入图片。通过简单示例展示了如何高效使用python-docx库完成文档操作。因开学时间有限,内容精简,后续将更新列表和表格相关内容。欢迎指正交流!
|
5月前
|
Python
Python学习的自我理解和想法(23)
本文记录了学习Python正则表达式的第23天心得,内容基于B站麦叔课程。文章分为三个部分:1) 正则表达式的七个境界,从固定字符串到内部约束逐步深入;2) 写正则表达式的套路,以座机号码为例解析模式设计;3) 正则表达式语法大全,涵盖字符类别、重复次数、组合模式、位置、分组、标记、特殊字符和替换等知识点。总结中表达了对知识的理解,并欢迎指正。

热门文章

最新文章

推荐镜像

更多