Python(十七)字符串

字符串的常用操作

字符串的查询操作:

  • index():查找子串第一次出现的位置,如果查找的字串不存在时,则抛出ValueError
  • rindex():查找子串最后一次出现的位置,如果查找的字串不存在时,则抛出ValueError
  • find():查找子串第一次出现的位置,如果查找的子串不存在,则返回-1
  • rfind():查找子串最后一次出现的位置,如果查找的子串不存在,则返回-1

例:

s1='python,hello,hello'
print(s1.index(','))#第一次,出现的位置
print(s1.rindex(','))#最后一次,出现的位置
print(s1.find('lo'))
print(s1.rfind('lo'))

结果:

6
12
10
16

字符串的大小写转换操作:

  • upper():将字符串中所有字符都转为大写字母
  • lower():将字符串中所有字符都转成小写字母
  • swapcase():将字符串中大写字母转为小写,小写转为大写
  • capitalize():将第一个字符转换为大写,其余字符都转为小写
  • title():将每个单词的第一个字符转为大写,把每个单词的剩余字符转为 小写

例:

s1='pyTHon,helLO,Hello,98'
print(s1.upper())
print(s1.lower())
print(s1.swapcase())
print(s1.capitalize())
print(s1.title())

结果:

PYTHON,HELLO,HELLO,98

python,hello,hello,98

PYthON,HELlo,hELLO,98

Python,hello,hello,98

Python,Hello,Hello,98

字符串内容对齐操作:

  • center():居中对齐,第1个参数指定宽度,第2个参数指定填充符,第二个参数是可选的,默认是空格,如果设置宽度小于实际宽度则返回原字符串
  • ljust():左对齐,第1个参数指定宽度,第2个参数指定填充符,第二个参数是可选的,默认是空格,如果设置宽度小于实际宽度则返回原字符串
  • rjust():右对齐,第1个参数指定宽度,第2个参数指定填充符,第二个参数是可选的,默认是空格,如果设置宽度小于实际宽度则返回原字符串
  • zfill():右对齐,左边用0填充,该方法只接收一个参数,用于指定字符串的宽度,如果指定的宽度小于等于字符串的长度,返回字符串本身

例:

s1='python,hello,98'
print(s1.center(25))#s1共有15个字符,设置宽度为25字符,缺少十个字符默认用空格填充
print(s1.center(25,'*'))#居中对齐
print(s1.ljust(25,'*'))#左对齐
print(s1.rjust(25,'*'))#右对齐
print(s1.zfill(25))

结果:
请添加图片描述

字符串的劈分操作:

split():

  • 从字符串的左边开始劈分,默认的劈分字符是空格字符串,返回的值都是一个列表
  • 以通过参数sep指定劈分字符串是的劈分符
  • 通过参数maxsplit指定劈分字符串时的最大劈分次数,在经过最大次劈分之后,剩余的子串会单独作为一部分

rsplit():

  • 从字符串的右边开始劈分,默认的劈分字符是空格字符串,返回的值都是一个列表
  • 以通过参数sep指定劈分字符串是的劈分符
  • 通过参数maxsplit指定劈分字符串时的最大劈分次数,在经过最大次劈分之后,剩余的子串会单独作为一部分

例:

s1='python,hello,98'
s2='hello world python'
print(s1.split())#默认劈分字符为空格
print(s2.split())
print(s1.split(sep=','))#sep()设置劈分符
print(s1.split(sep=',',maxsplit=1))#maxsplit设置最大劈分次数
print(s1.rsplit(sep=',',maxsplit=1))

结果:

[‘python,hello,98’]

[‘hello’, ‘world’, ‘python’]

[‘python’, ‘hello’, ‘98’]

[‘python’, ‘hello,98’]

[‘python,hello’, ‘98’]

判断字符串操作的方法

isidentifier():判断指定的字符串是不是合法的标识符
例:

s1='python,hello,98'
print(s1.isidentifier())#逗号不是合法的标识符

结果:

False

isspace():判断指定的字符串是否全部由空白字符组成(回车、换行、水平制表符)
例:

s1='\t'
print(s1.isspace())

结果:

True

isalpha():判断指定的字符串是否全部由字母组成
例:

s1='abc'
print(s1.isalpha())
s2='张三'
print(s2.isalpha())
s3='张三1'
print(s3.isalpha())

结果:

True
True
False

isdecimal():判断指定字符串是否全部由十进制的数字组成
例:
s1=‘354687,98,51’
print(s1.isdecimal())
s2=‘354687’
print(s2.isdecimal())
结果:
False
True

isnumeric():判断指定的字符串是否全部由数字组成
例:

s1='123四'
print(s1.isnumeric())
print(isdecimal())

结果:

True
False

isalnum():判断指定字符串是否全部由字母和数字组成
例:

s1='354687abc'
s2='张三86331'
print(s1.isalnum())
print(s2.isalnum())

结果:

True
True

字符串的替换

  • replace():第1个参数指定被替换的字符,第2个参数指定替换子串的字符串,该方法返回替换后得到的字符串,替换前的字符串不发生变化,调用该方法时可以通过第3个字参数最大替换次数

例:

s='hello,python,world'
print(s.replace('python','java'))

s1='hello,python,python,python'
print(s1.replace('python','java',2))

结果:

hello,java,world

hello,java,java,python

字符串的合并

  • join():将列表或元组中的字符串合并成一个字符串

例:

lst=['hello','java','python']
print('|'.join(lst))
print(''.join(lst))

s=('hello','java','python')
print('+'.join(s))
print('|'.join('python'))

结果:

hello|java|python

hellojavapython

hello+java+python

p|y|t|h|o|n

字符串的比较操作

运算符:> < >= <= == !=

  • 比较规则:首先比较两个字符串中的第一个字符,如果相等则继续比较下一个字符,依次比较下去,直到两个字符串中的字符不相等时,其比较结果就是两个字符串的比较结果,两个字符串中的所有后续字符串将不再被比较
  • 比较原理:两个字符继续比较时,比较的是其原始值,调用内置函数ord可以得到指定字符的原始值。与内置函数ord对应的是内置函数chr,调用内置函数chr时指定初始值可以得到其对应的字符

例:

print('apple'>'app')#先比较第一个字母a,然后比较第二个字母,依次向后
print('apple'>'bpp')#第一个字母a对应97,b对应98
print(ord('a'),ord('b'))
print(chr(97),chr(98))

结果:

True
False
97 98
a b

字符串的切片操作

请添加图片描述

字符串是不可变类型

  • 不具备增、删、改等操作
  • 切片操作将产生新的对象

例:

s='hello,python'
s1=s[:5]#不写起始位置,会从0开始一直到4位置
s2=s[6:]#不写结束位置,会从起始位置一直切到最后
print(s1,s2)
s3='!'
print(s1+s3+s2)


s4=s[:10:3]#最后一个数字表示步长
print(s4)

结果:

hello python

hello!python

hlph

格式化字符串

请添加图片描述

一、%
例:

name='张三'
age=20
print('我叫%s,今年%d' %  (name,age))

结果:

我叫张三,今年20

二、{}
例:

name='张三'
age=20
print('我叫{0},今年{1}岁,我真的叫{0}'.format(name,age))

结果:

我叫张三,今年20岁,我真的叫张三

三、f-string f连接自定义字符串
例:

name='张三'
age=20
print(f'我叫{name},今年{age}岁')

结果:

我叫张三,今年20岁

其他操作

一、

print('%d' % 99)
print('%10d' % 99)#10表示宽度

结果:

99
(前面有8个空格)99

二、

print('%.3f' % 3.1415926)#表示保留三位小数
print('{0:.3}'.format(3.1415926))#.3表示一共是3位数
print('{0:.3f}'.format(3.1415926))#表示三位小数

结果:

3.142
3.14
3.142

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值