python--python基础学习--字符串及正则表达式

目录

一.字符串的常用操作

1.1 拼接字符串

1.2计算字符串的长度

1.3 截取字符串

1.4分隔,合并字符串

1.5检索字符串

1.6 字母的大小写转换

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

1.8格式化字符串

2.字符串编码转换

2.1 使用encode()方法编码

2.2 使用decode()方法解码

3.正则表达式

3.1行定位符

3.2 元字符

3.3  限定符

3.4排除字符

3.5 选择字符

3.6转义字符

3.7分组

四.使用re模块实现正则表达式操作

4.1 匹配字符串

4.2替换字符串

4.3使用正则表达式分割字符串


一.字符串的常用操作

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)

猜你喜欢

转载自blog.csdn.net/yezonghui/article/details/113312099