字符串
在python中字符串时基本数据类型,是一个不可变的字符序列
字符串的查询操作的方法
方法名称 | 作用 |
index(substr) | 查找子串中substr第一次出现的位置,如果查找的子串不存在时,则抛出ValueError |
rindex(substr) | 查找子串中substr最后一次出现的位置,如果查找的子串不存在时,则抛出ValueError |
find(substr) | 查找子串中substr第一次出现的位置,如果查找的子串不存在时,则返回-1 |
rfind(substr) | 查找子串中substr第一次出现的位置,如果查找的子串不存在时,则返回-1 |
代码如下:
s='hello,world,hello,world'
print(s.index('llo'))
print(s.rindex('llo'))
print(s.find('ld'))
print(s.rfind('ld'))
运行结果:
2
14
9
21
字符串的大小写转换
方法名称 | 作用 |
upper() | 把字符串中所有字母转成大写 |
lower() | 把字符串中所有字母转成小写 |
swapcase() | 把字符串中所有小写字母转成大写,所有大写字母转小写 |
capitalize() | 把第一个字符转大写,其余字符转小写 |
title() | 把每个单词的第一个字符转为大写,把每个单词的剩余字符转小写 |
代码如下:
s='hello,WORLD'
print(s.upper())
print(s.lower())
print(s.swapcase())
print(s.capitalize())
print(s.title())
输出结果:
HELLO,WORLD
hello,world
HELLO,world
Hello,world
Hello,World
删除字符串的空白
方法名称 | 作用 |
strip() | 删除字符串两边的空白 |
rstrip() | 删除字符串右边的空白 |
lstrip() | 删除字符串左边的空白 |
字符串内容对齐
方法名称 | 作用 |
center() | 居中对齐,第一个参数指定宽度,第二个参数指定填充符,并且是可选的,默认为空格,如果设置宽度小于实际宽度则返回原字符 |
ljust() | 左对齐,第一个参数指定宽度,第二个参数指定填充符,并且是可选的,默认为空格,如果设置宽度小于实际宽度则返回原字符 |
rjust() | 右对齐,第一个参数指定宽度,第二个参数指定填充符,并且是可选的,默认为空格,如果设置宽度小于实际宽度则返回原字符 |
zfill() | 右对齐,左边用0填充,该方法只接受一个参数,用于指定字符串的宽度,如果设置的宽度小于等于原字符串的长度,则返回字符本身 |
代码如下:
s='hello,WORLD'
print(s.center(19,"*"))
print(s.ljust(19,"*"))
print(s.rjust(19,"*"))
print(s.zfill(19))
运行结果:
****hello,WORLD****
hello,WORLD********
********hello,WORLD
00000000hello,WORLD
字符串劈分操作
方法名称 | 作用 |
split() | 从字符串的左边开始劈分,默认的劈分字符是空格字符串,返回的是一个列表 通过参数sep来指定劈分符 通过参数maxsplit指定最大劈分次数,在经过最大劈分次数之后,剩余的子串会单独作为一部分 |
rsplit() | 从字符串的右边开始劈分,默认的劈分字符是空格字符串,返回的是一个列表 通过参数sep来指定劈分符 通过参数maxsplit指定最大劈分次数,在经过最大劈分次数之后,剩余的子串会单独作为一部分 |
代码如下:
s='hello,world,python,java'
print(s.split(maxsplit=2,sep=','))
s1='hello world python java'
print(s1.split())
#————————————————————————
s='hello,world,python,java'
print(s.rsplit(maxsplit=2,sep=','))
s1='hello world python java'
print(s1.rsplit())
运行结果:
['hello', 'world', 'python,java']
['hello', 'world', 'python', 'java']['hello,world', 'python', 'java']
['hello', 'world', 'python', 'java']
判断字符串
方法名称 | 作用 |
isidentifier() | 判断指定字符串是不是合法的标识符(标识符是由字符、下划线和数字组成,但第一个字符不能是数字) |
isspace() | 判断字符串是否全部由空白字符串组成(回车,换行,水平制表符) |
isalpha() | 判断字符串是否全部由字母,字符构成 |
isdecimal() | 判断字符串是否全由十进制的数字构成(一,二,三……罗马数字皆为False) |
isnumeric() | 判断指定的字符串是否全部由数字构成(一,二,三……罗马数字皆为True) |
isalnum() | 判断字符串是否全部由字母和数字组成 |
代码如下:
s='123456'
print(s.isidentifier())
s1='hello123456_abc'
print(s1.isidentifier())
#——————————————————————————————————
print('\t'.isspace())
#——————————————————————————————————
print('asdasda'.isalpha())
#——————————————————————————————————
print('23534675698'.isdecimal())
#——————————————————————————————————
print('123四Ⅴ'.isnumeric())
#——————————————————————————————————
print('asjfgy8923457'.isalnum())
运行结果:
False
True
True
True
True
True
True
字符串的替换
方法名称 | 作用 |
replace() | 第一个参数指定被替换的字符串,第二个参数指定替换字符串的子串的字符串,该方法返回替换后得到的字符串,替换前的字符串不再发生变化,调用该方法时可以通第三个参数指定最大替换次数 |
代码如下:
s='hello,hello,hello,world,python'
s1=s.replace('hello','你好',2)
print(s1)
运行结果:
你好,你好,hello,world,python
字符串的合并
方法名称 | 作用 |
join() | 将列表或元组中的字符串合并成一个字符串(列表中不能有其他数据类型) |
代码如下:
lis=list(['1','2','3','4','5','6'])
print(' '.join(lis))
tup=tuple(('a','b','c','d','e'))
print('|'.join(tup))
运行结果:
1 2 3 4 5 6
a|b|c|d|e
字符串的切片
字符串是不可变类型,不具备增,删,改等操作,切片操作将产生新的对象
方法名称 | 作用 |
newStr=oldStr [ a:b:c ] | 从索引a开始,左闭右开,若不填写参数a,则默认从头开始,到索引为b-1的位置结束;若不填写参数b,则默认截取从a开始,到整个字符串结束。若不填写参数c,则默认步长为1. |
代码如下:
s='hello,world'
#--------------
s1=s[1:7:]
print(s1)
#--------------
s2=s[1::]
print(s2)
#--------------
s3=s[:7:]
print(s3)
#--------------
s4=s[1:9:2]
print(s4)
#--------------
s5=s[::-1]
print(s5)
#--------------
s6=s[8::-1]
print(s6)
运行结果:
ello,w
ello,world
hello,w
el,o
dlrow,olleh
row,olleh
格式化字符串
格式化字符串的三种方式:
1,使用%作为占位符
%s表示字符串,%i(或者%d)表示整数,%f表示浮点数
%xd:表示宽度为x
%.xf:表示小数点后x位
语法:‘adc%s,def%d’ % (实际值,实际值)
2,使用{}作为占位符
语法:‘abc{},def{}’.format(实际值,实际值)
{:.x}:表示宽度为x
{:.xf}:表示保留x位小数
3,f字符串
语法f‘adc{实际值},def{实际值}’
代码如下
name='张三'
age=19
print('我叫%s,我今年%d'%(name,age))
print('我叫{},我今年{}'.format(name,age))
print(f'我叫{name},我今年{age}')
print('%10d'%1000)
print('%.3f'%3.1415926)
print('%10.3f'%3.1415926)
print('{:.2}'.format(3.1415926))
print('{:.2f}'.format(3.1415926))
运行结果
我叫张三,我今年19
我叫张三,我今年19
我叫张三,我今年19
1000
3.142
3.142
3.1
3.14