python 3 基础之字符串下标索引、切片、方法
字符串定义
name = “”或name = ‘’或name = str()
保留文本格式(需要用三引号,''''''或"""""")
字符串的下标索引(中括号里的下标索引 需要在字符串序列数中,超出会报错;若从右到左算从-1开始,都是等价的,实际开发都是从0开始),如
my_str = 'hello'
ret = my_str[2]
print(ret)
字符串切片(切片是指对操作的对象截取其中一部分的操作)
切片的语法:[起始:结束(开区间):步长],一般情况步长不写,默认为1
a = 'abcdef'
print(a[-1:-4:-2])#-1:从右到左;-4:从右到左取到第四位,即c;-2:步长为右到左2位
取abc -> a[0:3] 或者 a[:3],若从头开始取,0可以省略不写
print(a[0:3])
字符串的方法
a = 'abcdef'
1、find(查找字符串里的字符,返回其下标索引)
查询到对应的字符串会返回一个下标索引,若没有,则返回-1
ret1 = a.find('d')
print(ret1)
print(a.find('a',1))#从下标1开始,查找在字符串里第一个出现的子串:返回结果-1
2、index用法与find一样,index若找不到会异常
19、rindex 类似index(),这是从右到左查找,找到没事没找到报异常
18、rfind 类似find()方法(从左到右查找),这是从右到左开始找(索引编号还是原来的左到右),两者用法看字符串长度决定用哪个(查找速度、性能)
a = 'abcdefabcd'
print(a.rfind('b'))#若没找到报-1
3、count(计算字符串中某个字符出现的次数,若没找到则0)
格式:str.count("char", start,end)
char —— 为要统计的字符(可以是单字符,也可以是多字符)。
star —— 为索引字符串的起始位置,默认参数为0。
end —— 为索引字符串的结束位置,默认参数为字符串长度即len(str)。
print(a.count('a'))
print(a.count("i",2,5)) #star值为2,end值为5
4、replace(把字符串里的某个字符进行更改)
a = 'abcdefghaa'
ret4 = a.replace('a','ds',1)#把a修改成ds,只修改一次,如删掉后面的1,则代表更改字符串里的所有a
print(a)#打印a不是修改后的字符串,字符串是不变的,只能重新定义一个变量
print(ret4)
print(a.replace('a','ds',1))#等价于print(ret4)
5、split(以某个字符为界分割字符串,分割后此字符串不存在;分割后产生一个新的数据类型:列表)
str.split() 默认以空格,换行(\n),制表符\t分割
str.split('字符串'):以字符串为分割
str.split('字符串',2)分割以前2次出现的字符串为分割
a = 'abacdefandafinad'
ret5 = a.split('a')
print(ret5)
22、splitlines 找到字符串里的\n,默认以此为界分隔字符(\n会自动删掉),返回一个包含各行作为元素的列表
splitlines() 方法语法:S.splitlines([keepends=False])
keepends -- 在输出结果里是否去掉行界符('\r', '\r\n', \n'等),默认为 False,不包含行界符,如果为 True,则保留行界符。
a = 'abcd\nedsd\ndk\nds'
ret = a.splitlines()
print(ret)
print(type(ret))
6、capitalize 把字符串的第一个字符大写
a = 'sadkjhkj'
print(a.capitalize())#实则变量a还是a,没有改变
7、title把字符串里的每个单词首字母大写
a = 'a bc de f'#若用空格分开,则认为是多个单词,否则当做一个单词处理
print(a.title())
10、lower 转换字符串中的大写字符为小写,小写不变
a = 'NXCBdefandafinad'
print(a.lower())
11、upper把字符串中的小写全部转换成大写
a = 'abacdefanXdafinad'
print(a.upper())
8、startswith 检查字符串是否以某些字符开头,是则返回True,否则返回False
a = 'abacdefandafinad'
print(a.startswith('aba'))
9、endswith 检查字符串是否以某些字符结尾,是则返回True,否则返回False
a = 'abacdefandafinad'
print(a.endswith('nad'))#区分大小写
可能会上传个文件是MP4后缀结束,此时需要endswith判断
12、ljust 返回一个原来字符串左对齐,并使用空格填充至长度width的新字符串
a = 'what'
ret1 = a.ljust(10,'x') 原来的字符串先左对齐,如果不够10位,用x表示,占据10个位置,10看业务需求决定
print(ret1)
13、rjust(跟ljust用法一致)
a = 'what'
ret2 = a.rjust(10,'x') #原来的字符串先右对齐,如果不够10位,用x表示,占据10个位置
print(ret2)
设想左边三个1右边三个1中间abcd
14、center 居中
a = 'abcd'
print(a.center(10,' '))#若不对称则默认左边少一个
15、lstrip 删除字符串里字符左边的空格,包括\n和\t(\t指的是Tab键)(中间的空字符不去除)
a = ' dsk k '
print(a.lstrip())
也可以把字符左侧的一些字符删除掉,如
a = '11123abdc'
print(a.lstrip('12'))#不填则默认去除空格,填则只能填最左边的某些字符,词句去除了左边的1和2
16、rstrip 去除字符串最右边的空格或一些字符
a = 'dksdl33443k'
print(a.rstrip('34k'))#去掉字符串中的3和4、k
17、strip 去除字符串两边的空格或字符
a = '23222abcd1x21212'
print(a.strip('123'))#去除两边的123
20、partition 把字符串以某个字符分割(从左到右,找到第一个e,以此为界分割)成三部分,字符串前、字符串、字符串后
a = 'abcdefghe'
ret = a.partition('e')
print(ret)#产生新的数据类型
print(type(ret))
23、isalpha 判断一个字符串里是否全部是字母,是则返回布尔值True,否则False
a = 'abcdefghe'
ret = a.isalpha()
print(ret)
24、 isdigit判断字符串里是否全是数字,是则返回布尔值True,否则False
a = '0435435'
ret = a.isdigit()#网站判断密码过于简单就是用这个来判断的
print(ret)
25、isalnum 字符串里的所有字符都是字母或数字则返回True,否则False
a = 'abcd213efghe'
ret = a.isalnum()
print(ret)
26、isspace 字符串中只包含空格,则返回 True,否则返回 False
27、join 字符串中每个元素后面插入str,构造出一个新的字符串
用人话说:把一个列表里的元素合在一起,构成一个新的字符串
定义一个列表(列表里的叫元素)
my_list = ['li','baoc','dabei']
ret = ' '.join(my_list)#引号里输入什么,打印出来的字符串里的字符(原来是列表里的元素)就以什么