一、字符串
双引号或者单引号中的数据,就是字符串
a=1#数字类型
b="abcdef"#字符串类型
b='abcdef'#字符串类型
字符串的下标
相比于c语言 Python的字符串下标多了“-”值
比如
b[1]=a,b[2]=b
b[-1]=f,b[-2]=e
注意!!!
如果从左侧开始编号,那么下标从 0 开始
如果从右侧开始编号,那么下标从-1开始,而不是0开始
二、字符串切片
切片是指对操作的对象截取其中一部分的操作,有一个字符串"abcdef",我们可以通过切片取到"cde"
语法
[起始:结束:步长]
name = 'abcdef'
b=name[0:3]# 取下标为0、1、2的字符,注意取不到下标为3的空间
print(b)
print(name[:3]) # 取下标为0、1、2的字符,注意取不到下标为3的空间
print(name[3:5]) # 取 下标为3、4 的字符
print(name[2:]) # 取 下标为2开始到最后的字符
print(name[1:-1])# 取 下标为1开始 到 右侧第2个字符 之间的所有字符
print(name[0:-1])# 取 下标为0开始 到 右侧第1个字符 之间的所有字符
print(name[1:5:2])#2代表步进 1,5为起点和停止,不包含5
print(name[1:5:1])#1代表步进 1,5为起点和停止,不包含5
print(name[5:1:-1])#-1代表步进 5,1为起点和停止,不包含1
print(name[5:1:-2])#-1代表步进 5,1为起点和停止,不包含1 所以到不了b
print(name[::1])#起点取到终点(包含),步进为1
print(name[::])#起点取到终点(包含),默认步进为1
print(name[::-1])#开始位置、结束位置都未指定,步长为-1,此时从最右取到最左
print(name[::-2])#开始位置、结束位置都未指定,步长为-2,此时从最右取到最左
abc
abc
de
cdef
bcde
abcde
bd
bcde
fedc
fd
abcdef
abcdef
fedcba
fdb
1、选取的区间从"起始"位开
始,到"结束"位的前一位结束(不包含结束位本身),步长表示选取间隔
2、默认“步长”为1,即取完一个下标的数据之后,第二个下标的是在刚刚下标基础上+1
3、步长为正数,表示从左向右取数据
4、步长为负数,表示从右向左取数据
切片使用规则中,要么一个冒号[开始位置:结束位置],要么两个冒号[开始位置:结束位置:步长]
1、不写步长时,默认为1
2、步长为正数,表示从左向右取数据
3、步长为负数,表示从右向左取数据
4、当开始位置、结束位置都没有设定时,要看步长,如果步长为正数此时开始位置理解为最左 结束位置为最右,如果步长为负数此时开始位置理解为最右 结束位置为最左
三、字符串常见操作
- [1 ] find–查找
检测str是否包含在 my_str中,如果是返回开始的索引值,否则返回-1
- [2 ] rfind–查找
类似于 find()函数,不过是从右边开始查找
names = "asdasdasdasd"
str = "da"
print(names.find(str))
print(names.rfind("da"))
print(names.find("ds"))
>>>
>2
8
-1
- [3 ] count
返回 str在start和end之间在 my_str里面出现的次数
names = "asdasdasdasd"
str = "da"
print(names.count(str))
>>>
3
- [4 ] replace替换
把 my_str 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次
names = "asdasdasdasd"
a=names.replace("da","xx",2)
print(names)
print(a)
>>>
asdasdasdasd
asxxsxxsdasd
- [5 ] split
以 str 为分隔符切片 my_str,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串
names = "asdasdasdasdasasas"
a=names.split("a",4)
print(names)
print(a)
>>>
asdasdasdasdasasas
['', 'sd', 'sd', 'sd', 'sdasasas']
- [6 ] startswith
检查字符串是否是以 hello 开头, 是则返回 True,否则返回 False
names = "asdasdasdasdasasas"
a=names.startswith("a")
b=names.startswith("s")
print(names)
print(a)
print(b)
>>>
asdasdasdasdasasas
True
False
- [7 ] endswith
检查字符串是否以obj结束,如果是返回True,否则返回 False.
names = "asdasdasdasdasasas"
a=names.endswith("a")
b=names.endswith("s")
print(names)
print(a)
print(b)
>>>
asdasdasdasdasasas
False
True
- [8 ] lower
转换 my_str 中所有大写字符为小写
names = "ASDasdasdasdasasas"
a=names.lower()
print(names)
print(a)
>>>
ASDasdasdasdasasas
asdasdasdasdasas
- [9 ] upper
转换 my_str 中所有小写字母为大写
names = "ASDasdasdasdasasas"
a=names.upper()
print(names)
print(a)
>>>
ASDasdasdasdasasas
ASDASDASDASDASASAS
- [10] strip
删除字符串两端的空白字符
names = " ASDasdasdasdasasas "
a=names.strip()
print(names)
print(a)
>>>
ASDasdasdasdasasas
ASDasdasdasdasasas
- [ 11] partition
把my_str以str分割成三部分,str前,str和str后
names = "ASDasdasdasdasasas"
a=names.partition("as")
print(names)
print(a)
>>>
ASDasdasdasdasasas
('ASD', 'as', 'dasdasdasasas')#元组
- [12 ] splitlines
按照行分隔,返回一个包含各行作为元素的列表
names ="""ASDas
dasdasdasa
sas"""
a=names.splitlines()
print(names)
print(a)
>>>
ASDas
dasdasdasa
sas
['ASDas', 'dasdasdasa', 'sas']
- [ 13] isalpha
如果 my_str 所有字符都是字母 则返回 True,否则返回 False
names ="ASDasdasdasdasasas"
a=names.isalpha()
print(names)
print(a)
>>>
ASDasdasdasdasasas
True
- [ 14] isdigit
如果 my_str 只包含数字则返回 True 否则返回 False.
names ="ASDasdasdasdasasas"
a=names.isdigit()
print(names)
print(a)
>>>
ASDasdasdasdasasas
False
- [ 15] isalnum
如果 my_str 所有字符都是字母或数字则返回 True,否则返回 False
names ="ASDasdasdasdasasas"
a=names.isalnum()
print(names)
print(a)
>>>
ASDasdasdasdasasas
True
- [ 16] join
my_str 中每个元素后面插入str,构造出一个新的字符串
names ="abc"
datas ="xyz"
a=datas.join(names)
print(names)
print(a)
>>>
abc
axyzbxyzc