目录
一.字符串的常用操作
1.1 拼接字符串
使用"+"运算符可以完成对多个字符串的拼接,并产生一个字符串对象。
注意:字符串不允许直接与其它类型的数据拼接
1.2计算字符串的长度
len()函数计算字符串的长度
1.3 截取字符串
字符串也属于序列,所以要截取字符串,可以采用切片方法实现
string[start:end:step]
str1 = "人生苦短,我用python"
length = len(str1)
print(length) #13
substr = str1[1:6:2]
print(substr) #生短我
1.4分隔,合并字符串
1)分隔字符串
字符串对象的split()方法可以实现字符串分隔,也就是把一个字符串按照指定的分隔符切为字符串列表
str1 = "明 日 学 院 官 网 >>> www.mingrisoft.com"
list1 = str1.split()
list2 = str1.split(">>>")
list3 = str1.split(".")
list4 = str1.split(" ",4) #只分割前4个
list5 = str1.split(">") #每个分割一次,没有得到内容的,将产生一个空元素
print(list1)
print(list2)
print(list3)
print(list4)
print(list5)
'''
['明', '日', '学', '院', '官', '网', '>>>', 'www.mingrisoft.com']
['明 日 学 院 官 网 ', ' www.mingrisoft.com']
['明 日 学 院 官 网 >>> www', 'mingrisoft', 'com']
['明', '日', '学', '院', '官 网 >>> www.mingrisoft.com']
['明 日 学 院 官 网 ', '', '', ' www.mingrisoft.com']
2)合并字符串
合并字符串与拼接字符串不同,它会将多个字符串采用固定的分隔符连接在一起
合并字符串可以使用字符串对象的join()方法实现
1.5检索字符串
1)count()方法: 用于检索指定字符串在另外一个字符串中出现的次数。
如果检索的字符串不存在,则返回0,否则返回出现的次数。
2)find()方法
该方法用于检索是否包含指定的子字符串,如果检索的字符串不存在,则返回-1,否则返回首次出现该字符串时的索引。
str.find(sub)
3)index()方法
index()方法同find()方法类似,也是用于检索是否包含指定的子字符串,当指定的字符串不存在时,会抛出异常。
4)startswith()方法
start()方法用于检索字符串是否以指定字符串开头,如果是则返回true,否则返回false
5)endswith()方法
endswith()方法用于检索字符串是否以指定字符串结尾。
1.6 字母的大小写转换
字符串提供了lower()和upper()方法进行字母的大小写转换
str1.upper()
str1.lower()
1.7 去除字符串中的空格和特殊字符
1)strip()用于去掉字符串左右两侧的空格和特殊字符
2)lstrip()方法用于去掉字符串左侧的空格和特殊字符
str.lstrip()
str2.lstrip("@")
3)rstrip()方法用于去掉字符串右侧的空格和特殊字符
1.8格式化字符串
1)要实现格式化字符串,使用%操作符
eg: %s 字符串(采用str()显示)
2)使用字符串的format()方法进行字符串格式化
2.字符串编码转换
python3.x中,默认采用的编码格式为utf-8,采用这种编码有效地解决了中文乱码问题。
2.1 使用encode()方法编码
encode()方法为str对象的方法,用于将字符串转换为二进制数据(即bytes),也成为编码
verse = "野渡无人舟自横"
byte = verse.encode('gbk')
2.2 使用decode()方法解码
decode()方法为bytes对象的方法用于将二进制数据转换为字符串,即将使用encode()方法转换的结果再转换为字符串,也称“解码”。
print("解码后: ",byte.decode("GBK"))
3.正则表达式
3.1行定位符
行定位符就是要描述字符串的边界, “^”表示行的开始,“$”表示行的结尾
^tm
tm$
3.2 元字符
3.3 限定符
例如匹配8位qq号
^\d{8}$
3.4排除字符
匹配不符合指定字符集合的字符串,使用^
[^a-zA-Z]
3.5 选择字符
使用选择字符(|)来实现
3.6转义字符
转义字符(\)
3.7分组
小括号改变限定符的作用范围
(six|four)th
四.使用re模块实现正则表达式操作
python提供了re模块,用于处理正则表达式的操作,可以使用re模块提供的方法search(),match(),findall()等
4.1 匹配字符串
1)使用match()方法进行匹配
用于从字符串的开始处进行匹配,如果在起始位置匹配成功,则返回match对象,否则返回None.
从开始位置匹配,当第一个字母不符合条件时候,不再进行匹配
re.match(pattern,string,[flags])
import re
pattern = r'mr_\w+'
string = 'MR_SHOP mr_shop'
match = re.match(pattern ,string,re.I)
print(match) #<re.Match object; span=(0, 7), match='MR_SHOP'>
string = "项目名称MR_SHOP mr_shop"
match = re.match(pattern,string,re.I)
print(match) #None
2)使用search()方法进行匹配
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)
#<re.Match object; span=(0, 7), match='MR_SHOP'>
#<re.Match object; span=(4, 11), match='MR_SHOP'>
[注意]:search()方法不仅仅是在字符串的起始位置搜索,其它位置有符合的匹配也可以进行搜索。
3)使用findAll()方法进行匹配
findAll()方法用于在整个字符串中搜索所以符合正则表达式的字符串,并以列表的形式返回,如果匹配成功,则返回包含匹配结构的列表,否则返回空列表
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)
#['MR_SHOP', 'mr_shop']
#['MR_SHOP', 'mr_shop']
4.2替换字符串
sub()方法用于实现字符串替换
import re
pattern = r'1[34578]\d{9}'
string = "中奖号码为13645611111,请领奖"
res = re.sub(pattern,"1*******",string)
print(res)
# 中奖号码为1*******,请领奖
4.3使用正则表达式分割字符串
split()方法用于实现根据正则表达式分割字符串,并以列表的形式返回。
其作用同字符串对象的split()方法类似,所不同的就是分割字符串由模式字符串指定
result = re.split(pattern,url)