Python学习笔记-字符串

创建字符串和不同引号的区别

创建字符串时,可以使用单引号(‘)、双引号(")或三引号(即三个连续的单引号’''或双引号"“”)。

区别:单引号和双引号的字符串要求写在一行中,二者在使用方法上并没有什么区别。使用单引号创建字符串时,如果字符串中也包含单引号字符串,则必须在单引号字符前加上转义符“\”;双引号同理。

使用三引号创建字符串,则允许直接将字符串写成多行的形式。在一对三引号括起来的字符串中,可以直接包含单引号和双引号,无需转义。

例:创建字符串示例。

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值