创建字符串和不同引号的区别
创建字符串时,可以使用单引号(‘)、双引号(")或三引号(即三个连续的单引号’''或双引号"“”)。
区别:单引号和双引号的字符串要求写在一行中,二者在使用方法上并没有什么区别。使用单引号创建字符串时,如果字符串中也包含单引号字符串,则必须在单引号字符前加上转义符“\”;双引号同理。
使用三引号创建字符串,则允许直接将字符串写成多行的形式。在一对三引号括起来的字符串中,可以直接包含单引号和双引号,无需转义。
例:创建字符串示例。
str1='Hello World!' # 使用一对单引号创建字符串并赋给变量str1
str2='你好,世界!' # 使用一对双引号创建字符串并赋给变量str2
str3='''我喜欢学习Python语言!''' # 使用一对三引号
print(str1)
print(str2)
print(str3)
Hello World!
你好,世界!
我喜欢学习Python语言!
例:单引号和双引号使用示例。
str1='It\'s a book' # 使用\'说明其是字符串的一个单引号字符,不加\则会报错。
str2="It's a book" # 使用一对双引号创建字符串,此时字符串中的单引号不需要转义符\
str3="He said:\"It is your book.\"" # 使用\"说明其是字符串中的双引号字符
str4='He said:It is your book.' # 使用一对单引号创建字符串,省掉了转义符
print(str1)
print(str2)
print(str3)
print(str4)
It's a book
It's a book
He said:"It is your book."
He said:It is your book.
例:三引号示例。
str='''你好!
欢迎学习Python语言程序设计!
祝你学习愉快! # 通过一对三引号定义包含多行文本信息的字符串
'''
print(str)
你好!
欢迎学习Python语言程序设计!
祝你学习愉快!
换行符\n
单引号和双引号中的字符串如果分多行写,必须在每行结尾加上续航符"“,如果希望一个字符串中包含多行信息,则需要使用换行符”\n"。
s1="Hello \
world!" # 上一行以\作为行尾,说明上一行与当前行是同一条语句。
s2="你好!\n欢迎学习Python语言程序设计!" # 通过\n换行
Hello world!
你好!
欢迎学习Python语言程序设计!
字符串比较
两个字符串按照从左至右的顺序逐个字符比较,如果对应的了两个字符相同,则继续比较下一个字符。
如果找到了两个不同的字符,则具有较大ASCII码的字符对应的字符串具有更大的值。
如果对应字符都相同:两个字符串长度相同,则这两个字符串相等。两个字符串长度不相同,则较长的字符串具有更大的值。
例:字符串比较实例。
str1='Python'
str2='C++'
str3='Python3.12'
str4=('Python')
print('str1大于str2:',str1>str2)
print('str1小于等于str2:',str1<=str2)
print('str1小于str3:',str1<str3)
print('str1大于str3:',str1>=str3)
print('str1等于str4:',str1==str4)
print('str1不等于str4:',str1!=str4)
str1大于str2: True
str1小于等于str2: False
str1小于str3: True
str1大于str3: False
str1等于str4: True
str1不等于str4: False
字符串切割(split方法)
按照指定的分隔符对字符串进行切割,返回由切割结果组成的列表。split方法语法格式为:
str.split(sep=None,maxsplit=-1)
其中,str是待切割的字符串;sep是指定的分隔符,可以有一个或多个字符组成(默认值为None,表示按空白符,如:空格、换行、制表符等)做字符串切割;maxsplit决定了最大切割次数,如果指定了则最多可以得到maxsplit+1个切割结果(默认值为-1,表示不对最大切割次数做限制。)
str1='It is a book'
str2='Python##C++##Jave##PHP'
ls1=str1.split() # 默认按空白符切割,切割结果列表保存在ls1中
ls2=str2.split('##') # 按'##'对st2做切割,切割结果列表保存在ls2中
ls3=str2.split('##',2) # 按'##'对str2做2次切割,切割结果列表保存在ls3中
print('ls1:',ls1)
print('ls2:',ls2)
print('ls3:',ls3)
ls1: ['It', 'is', 'a', 'book']
ls2: ['Python', 'C++', 'Jave', 'PHP']
ls3: ['Python', 'C++', 'Jave##PHP'] 注:只做了两次'##'切割,从左至右2个##
splitlines方法
固定以行结束符(\r、\n、\r\n)作为分隔符对字符串进行切割,返回由切割结果组成的列表。语法格式为:
str.splitlines([keepends])
其中,str是待切割的字符串;keepends表示切割结果中是否保留最后的行结束符,如果该参数值为True,则保留行结束符,否则不保留(默认为False)。
str="你好!\n欢迎学习Python语言程序设计!\r\n祝你学习愉快! \r"
ls1=str.splitlines() # 默认不保留行结束符
ls2=str.splitlines(True) # 保留行结束符
print('ls1',ls1)
print('ls2',ls2)
ls1 ['你好!', '欢迎学习Python语言程序设计!', '祝你学习愉快! ']
ls2 ['你好!\n', '欢迎学习Python语言程序设计!\r\n', '祝你学习愉快! \r']
字符串检索(find,index,rfind,rindex)
提供了4种用于进行字符串检索的方法,语法格式为:
str.find(sub[,start[,end]])
'''
在指定范围中按照从左至右的顺序检索,找到字符串sub第一次出现的位置。
如果检索不到字符串sub,find和rfind会返回-1,而index和rindex会引发ValueError异常。
'''
str.index(sub[,start[,end]]) # 与find作用相同,
str.rfind(sub[,start[,end]]) # 与find相反方向。
str.rindex(sub[,start[,end]]) # 与rfind作用相同。
从字符串str中检索字符串sub出现的位置。start和end参数指定了检索范围,即在切片str[start:end]范围中检索,默认情况下在str[:]范围中(即整个字符串中)检索。
str='cat dog cat dog cat dog'
print('str中第一次出现cat的位置:',str.find('cat')) # 从左往右
print('str中第一次出现cat的位置:',str.rfind('cat')) # 从右往左
print('str中第一次出现mouse的位置为:',str.find('mouse')) # 没有则返回-1
str中第一次出现cat的位置: 0
str中第一次出现cat的位置: 16
str中第一次出现mouse的位置为: -1
字符串替换(replace方法)
将字符串中指定的子串替换成其他内容,返回替换后的字符串,语法格式为:
str.replace(old,new[,max])
# str是要做替换操作的字符串;old和new分别是要替换的子串和替换成的字符串;
# max是最多替换的子串数量,如果不指定mac参数,则将所有满足条件的子串替换掉。
str='cat dog cat dog cat dog'
str1=str.replace('cat','mouse') # 将str中的所有cat替换为mouse
str2=str.replace('cat','mouse',2) # 将str2中的2个cat替换为mouse
print('str1:',str1)
print('str2:',str2)
str1: mouse dog mouse dog mouse dog
str2: mouse dog mouse dog cat dog
去除字符串空格(strip/lstrip/rstrip)
str.strip() # 去除str中头部和尾部的空格
str.lstrip() # 去除str中头部的空格
str.rstrip() # 去除str中尾部的空格
str.replace(' ','') # 去除str中的所有空格
例:去除字符串空格示例。
str=' I like Python! '
str1=str.strip() # 去除str中头部和尾部的空格,并将返回的字符串赋给变量str1
str2=str.lstrip() # 去除str中头部的空格,并将返回的字符串赋给变量str2
str3=str.rstrip() # 去除str中尾部的空格,并将返回的字符串赋给变量str3
str4=str.replace(' ','') # 去除str中所有空格
print('去掉头部和尾部空格后: #%s#'%str1)
print('去掉头部空格后: #%s#'%str2)
print('去掉尾部空格后: #%s#'%str3)
print('去掉所有空格后: #%s#'%str4)
去掉头部和尾部空格后: #I like Python!#
去掉头部空格后: #I like Python! #
去掉尾部空格后: # I like Python!#
去掉所有空格后: #IlikePython!#
字符串大小写转换(lower/upper/capitalize/swapcase)
str.capitalize() # 将字符串中第一个字母大写,其他字母都小写
str.lower() # 将字符串中的所有字母小写
str.upper() # 将字符串中的所有字母大写
str.swapcase() # 将字符串中的小写字母变大写,大写字母变小写
例:大小写转换示例。
str='i Like Python'
print('原字符串:',str)
print('capitalize方法的结果:',str.capitalize())
print('lower方法的结果:',str.lower())
print('upper方法的结果:',str.upper())
print('swapcase方法的结果:',str.swapcase())
原字符串: i Like Python
capitalize方法的结果: I like python
lower方法的结果: i like python
upper方法的结果: I LIKE PYTHON
swapcase方法的结果: I lIKE pYTHON
复制字符串
由于字符串是不可变类型,无法修改字符中的某个元素值,不存在修个一个字符串值会影响另一个字符串的问题。
因此,直接用赋值运算符“=”实现字符串复制功能即可。
str1='java'
str2='C++'
str1='Python' # 重新赋值为Python,java--->Python
print('str1:%s,str2:%s'%(str1,str2))
str1:Python,str2:C++
连接字符串(+,join)
直接使用拼接运算符(+),还可以使用字符串中的join方法将序列中的元素以指定的字符连接成一个新的字符串,join方法的语法格式为:
str.join(seq)
# seq是一个序列对象,str是使用的连接符,join方法返回连接后的字符串。
# 例:join方法使用示例。
str1=',' # 仅包含一个逗号的字符串
str2=' ' # 仅包含一个空格的字符串
str3='' # 一个空字符串
ls=['I','like','Python']
print(str1.join(ls))
print(str2.join(ls))
print(str3.join(ls))
I,like,Python
I like Python
IlikePython
获取字符串长度(len)
print('字符串 "Python" 的长度为: ',len('Python'))
print('字符串 "你好!" 的长度为: ',len('你好!'))
字符串 "Python" 的长度为: 6
字符串 "你好!" 的长度为: 3
测试字符串的组成部分(in)
如果需要判断一个字符串A是否是另一个字符串B的组成部分(即子串),可以直接使用前面介绍的字符串检索方法,检索成功,则A是B的子串,否则A不是B的子串。
另外,也可以使用更简洁的in运算符。
例:测试字符串的组成部分示例。
str='cat dog cat'
print("'cat'是str的子串:",'cat' in str)
print("'mouse'是str的子串:",'mouse' in str)
'cat'是str的子串: True
'mouse'是str的子串: False
占位符
n,f=20,35.67
print('n的十进制形式:%d,八进制形式:%o,十六进制形式: %x'%(n,n,n))
print('f的十进制形式: %f,指数形式: %e'%(f,f))
format方法
进行字符串的格式化操作,不会改变原有的值。其语法格式为:
str.format(*args,**kwargs)
# str是用于格式化的字符串,可以包含有大括号{}括起来的替换掉。
例:format方法示例。
# {}中的替换字段是位置参数的数字索引
str1='{0}的计算机成绩是{1},{0}的数学成绩是{2}'
# 替换字段是关键字参数的名称
str2='{name}的计算机成绩是{cs},{name}的数学成绩是{ms}'
print(str1.format('李晓明',90,85))
print(str2.format(cs=90,ms=85,name='李晓明'))
李晓明的计算机成绩是90,李晓明的数学成绩是85
李晓明的计算机成绩是90,李晓明的数学成绩是85
在format方法格式化字符串时,字符串的替换字段中还可以包含对实参属性的访问。
class New_Student:
def __init__(self,name,cs):
self.name=name
self.cs=cs
ss=New_Student('李晓明',90)
str1='{0.name}的计算机成绩是{0.cs}'
str2='{stu.name}的计算机成绩是{stu.cs}'
print(str1.format(ss))
print(str2.format(stu=ss))
李晓明的计算机成绩是90
李晓明的计算机成绩是90