7.1字符串编码转换
两种常用的字符串类型,分别是str和bytes。
str和bytes之间可以通过encode()和decode()方法进行转换,这两个方法是互为逆过程。
7.1.1使用encode()方法编码
encode()方法为str对象的方法,用于将字符串装换为二进制数据(即bytes),也称为“编码”,其语法格式如下:
str.encode([encoding=“utf-8”][,errors=“strict”])
str:表示要进行转换的字符串。
encoding=“utf-8”:可选参数,用于指定进行转码时采用的字符编码,默认为UTF-8。如果想使用简体中文,也可以设置为gb2312。当只有这一个参数时,也可以省略前面的“encoding=”,直接写编码。
errors=“strict”:可选参数,用于指定错误处理方式,其可选择值可以是strict(遇到非法字符就抛出异常)、ignore(忽略非法字符)、replace(用“?”替换非法字符)或xmlcharrefreplace(使用XML的字符引用)等,默认值为strict。
7.1.2使用decode()方法解码
decode()方法为bytes对象的方法,用于将二进制数据转换为字符串,即将使用encode()方法转换的结果再转换为字符串,也称为“解码”。
其语法格式如下:
bytes.decode([encoding=“utf-8”][,errors=“strict”])
string="我是一个中国人"
byte=string.encode(encoding="utf-8")
print(byte)
str=byte.decode(encoding="utf-8")
print(str)
D:\python\python.exe E:/python/字符串/7.1字符串编码转换.py
b'\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\x80\xe4\xb8\xaa\xe4\xb8\xad\xe5\x9b\xbd\xe4\xba\xba'
我是一个中国人
7.2字符串常用操作
7.2.1拼接字符串
使用“+”运算符可完成对多个字符串的拼接,字符串不允许直接与其他类型的数据拼接
str1 = “我爱中国”
str2=“我是中国人”
print(str1+"\n"+str2)
num = 21
try:
print(str1+num)
except:
print(“请拼接字符串类型的值”)
D:\python\python.exe E:/python/字符串/7.2.1拼接字符串.py
我爱中国
我是中国人
请拼接字符串类型的值
7.2.2计算字符串的长度
len(string)
str1='人生苦短,及时行乐'
print(len(str1))
byte1=str1.encode()
print(len(byte1))
byte2=str1.encode('gbk')
print(len(byte2))
D:\python\python.exe E:/python/字符串/7.2.2计算字符串的长度.py
9
27
18
7.2.3截取字符串
string[start🔚step]
string:表示要截取的字符串;
start:表示要截取的第一个字符的索引(包括该字符),如果不指定,则默认为0;
end:表示要截取的最后一个字符的索引(不包括该字符),如果不指定,则默认为字符串的长度;
step:表示切片的步长,如果省略,则默认为1.当省略该步长时,最后一个冒号也可以省略。
a="我们都是好孩子"
print(a[0::2])
print(a[:2:])
print("请输入你的身份证号:")
idcard=str(input())
print("你的出生年时间为:"+idcard[6:10]+'年'+idcard[10:12]+"月"+idcard[12:14]+"日")
D:\python\python.exe E:/python/字符串/7.2.3截取字符串.py
我都好子
我们
请输入你的身份证号:
110354199001011361
你的出生年时间为:1990年01月01日
7.2.4分隔、合并字符串
1.分割字符串
字符串对象的split()方法可以实现字符串分割。即把一个字符串按照指定的分割符切分为字符串列表。该列表的元素中,不包括分隔符。split()方法的语法格式如下:
str.split(sep,maxsplit)
str:表示要进行分隔的字符串。
sep:用于指定分隔符,可以包含多个字符,默认为None,即所有空字符(包括空格、换行“\n”、制表符“\t”等)。
maxsplit:可选参数,用于指定分割的次数,如果不指定或者为-1,则分割次数没有限制,否则返回结果列表的元素个数最多为maxsplit+1。
返回值:分割后的字符串列表。
str1="我 爱 北 京 www.baidu.com"
print(str1)
list1=str1.split()
list2=str1.split(" ")
list3=str1.split(".")
print(str(list1)+"\n"+str(list2)+"\n"+str(list3))
str2="@小明 @小李 @小花 @小刘"
list4=str2.split(" ")
print(list4)
for i in list4:
print(i[1:])
D:\python\python.exe E:/python/字符串/7.2.4分割、合并字符串.py
我 爱 北 京 www.baidu.com
['我', '爱', '北', '京', 'www.baidu.com']
['我', '爱', '北', '京', 'www.baidu.com']
['我 爱 北 京 www', 'baidu', 'com']
['@小明', '@小李', '@小花', '@小刘']
小明
小李
小花
小刘
2.合并字符串
合并字符串与拼接字符串不同,它会将多个字符串采用固定的分隔符连接在一起。
合并字符串可以使用字符串对象的join()方法实现。
strnew=string.join(iterable)
strnew:表示合并后生成的新字符串。
string:字符串类型,用于指定合并时的分隔符。
iterable:可迭代对象,该迭代对象中的所有元素(字符串表示)将被合并为一个新的字符串。string作为边界点分割出来。
string=["小明","小李","小花"]
strnew="@".join(string)
at="@"+strnew
print(at)
D:\python\python.exe E:/python/字符串/7.2.4合并字符串.py
@小明@小李@小花
7.2.5检索字符串
1.count()方法
count()方法用于检索指定字符串在另一个字符串中出现的次数。如果检索的字符串不存在,则返回0,否则返回出现的次数。
str.count(sub[,start[,end]])
str:表示原字符串;
sub:表示要检索的字字符串;
start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索;
end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。
str1='@明日科技 @扎克伯格 @盖茨 @马云'
print('检索个数:',str1.count('@'))
E:\python\venv\Scripts\python.exe E:/python/字符串/7.2.5检索字符串.py
检索个数: 4
2.find()方法
该方法用于检索是否包含指定的子字符串。如果检索的字符串不存在,则返回-1,否则返回首次出现该子字符串时的索引。
str.find(sub[,start[,end]])
str:表示原字符串;
sub:表示要检索的子字符串;
start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索;
end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。
如果输入的子字符串在原字符串中不存在,将返回-1。
str1='@明日科技 @扎克伯格 @盖茨 @马云'
print('检索个数:',str1.find('@'))
E:\python\venv\Scripts\python.exe E:/python/字符串/7.2.5检索字符串find()方法.py
检索个数: 0
3.index()方法
index()方法与find()方法类似,也是用于检索是否包含指定的子字符串。只不过如果使用index()方法,当指定的字符串不存在时会抛出异常。
str.index(sub[,start[,end]])
str:表示原字符串;
sub:表示要检索的子字符串;
start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索;
end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。
str1='@明日科技 @扎克伯格 @盖茨 @马云'
print(str1.index("@"))
4.startswith()方法
该方法用于检索字符串是否以指定子字符串开头。如果是,则返回True,否则返回False。语法格式如下:
str.startswith()
str:表示原字符串;
prefix:表示要检索的子字符串;
start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索;
end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。
str1='@明日科技 @扎克伯格 @盖茨 @马云'
print(str1.startswith('@'))
print(str1.startswith('@小明'))
E:\python\venv\Scripts\python.exe E:/python/字符串/7.2.5检索字符串startswith()方法.py
True
False
5.startswith()方法
该方法用于检索字符串是否以指定子字符串开头。如果是,则返回True,否则返回False。语法格式如下:
str.endswith()
str:表示原字符串;
prefix:表示要检索的子字符串;
start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索;
end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。
str1='@明日科技 @扎克伯格 @盖茨 @马云'
print(str1.endswith('@马云'))
print(str1.startswith('@小明'))
E:\python\venv\Scripts\python.exe E:/python/字符串/7.2.5检索字符串endswith()方法.py
True
False
7.2.6字母的大小写转换
1.lower()
lower()方法用于将字符串中的全部大写字母装换为小写字母。如果字符串中没有应该转换的字符,则将原字符串返回;否则将返回一个新的字符串,将原字符串中每个改进型小写装换的字符都准换成等价的小写字符。字符长度与与原字符长度相同。
str.lower()
2、upper()
str.upper()
username1='tom jerry jack lance'
username2=username1.upper()
regname1=input("注册名字为:")
regname2=regname1.upper()
if regname2 in username2:
print("用户已经存在!")
else:
print("用户不存在!")
E:\python\venv\Scripts\python.exe E:/python/字符串/7.2.6字母的大小写转换.py
注册名字为:tt
用户不存在!
7.2.7去除字符串中的空格和特殊字符
1.strip()方法
strip()方法用于去掉字符串左、右两侧的空格和特殊字符,其语法格式如下:
str.strip([chars])
str:为要去除空格的字符串;
chars:为可选参数,用于指定要去除的字符,可以指定多个,例如设置chars为“@.”,则去除左、右两侧包括的“@”或“.”。如果不指定chars参数,默认将去除空格、制表符\t、回车符\r、换行符\n等。
2.lstrip()方法
lstrip()方法用于去掉字符串左侧的空格和特殊字符,其语法格式如下:
str.lstrip([chars])
3.rstrip()方法
rstrip()方法用于去掉字符串左侧的空格和特殊字符,其语法格式如下:
str.rstrip([chars])
str1="\t www.baidu.com\t@"
print("原字符串str1:"+str1)
print(str1.strip())
print(str1.lstrip())
print(str1.rstrip())
print(str1.rstrip('@'))
E:\python\venv\Scripts\python.exe E:/python/字符串/7.2.7去除字符串中的空格和特殊字符.py
原字符串str1: www.baidu.com @
www.baidu.com @
www.baidu.com @
www.baidu.com @
www.baidu.com
7.2.8格式化字符串
格式化字符串的意思是现制定一个模板,在这个模板中预留几个空位,然后再根据需要填上相应的内容。这些空位需要通过指定的符号标记(也称为占位符),而这些符号还不会显示出来。
1.使用%操作符
‘%[-][+][0][m][.n]格式化字符’%exp
-:可选参数,用于指定左对齐,整数前方无符号,负数前面加负号。
+:可选参数,用于指定右对齐,整数前方无符号,负数前面加负号。
0:可选参数,表示右对齐,正数前方无符号,负数前方加负号,用0填充空白处(一般与m参数一起使用)
m:可选参数,表示占有宽度。
.n:可选参数,表示小数点后保留的位数。
格式化字符:用于指定类型,其值如表所示。
%s 字符串(采用str()显示)
%r 字符串(采用repr()显示)
%c 单个字符
%o 八进制整数
%d或者%i 十进制整数
%e 指数(基底写为e)
%x 十六进制整数
%E 指数(基底写为E)
%f或者%F 浮点数
%% 字符%
exp:要转换的项。如果要指定的项有多个,需要通过元组的形式进行指定,但不能使用列表。
ternplate='编号:%9d\t 公司名称:%s\t官网:http://www.%s.com'
context1=(7,'百度','baidu')
context2=(8,'谷歌','google')
print(ternplate%context1)
print(ternplate%context2)
E:\python\venv\Scripts\python.exe E:/python/字符串/7.2.8格式化字符串.py
编号: 7 公司名称:百度 官网:http://www.baidu.com
编号: 8 公司名称:谷歌 官网:http://www.google.com
2.使用字符串对象的format()方法与find字符串对象提供了format()方法用于进行字符串格式化。其语法格式如下:
str.format(args)
str:用于指定字符串的显式样式(即模板);args用于指定要转换的项,如果有多项,则用逗号进行分隔。
本文详细介绍了Python中的字符串操作,包括编码转换的encode()和decode()方法,字符串的拼接、长度计算、截取、分隔、合并、检索、大小写转换以及去除空格和特殊字符的方法。此外,还讲解了使用%操作符和format()方法进行字符串格式化的技巧。
417





