python容器--字符串string
容器分类
序列化容器:包括字符串,列表,元组
序列化容器根据索引(下标)访问元素,支持切片操作
非序列化容器:包括字典,集合
非序列化容器不支持索引(下标)的方式访问元素,不支持切片操作
字符串的定义方式
字符串使用一对单引号来定义.
字符串使用一对双引号来定义.
字符串使用一对三引号来定义.
一般我们在定义字符串时候, 使用两个单引号或者两个双引号, 很少使用三引号.
字符串的操作
1.字符串的遍历
字符串属于序列式容器, 支持依据索引的操作.
序列式容器.遍历时从索引为0的位置开始遍历,并不是1,也就是从下标为0的地方开始遍历,类似数组
str = "name"
i = 0
while i < len(str):
print(str[i],end="")
i += 1
2.字符串的替换
使用replace方法完成
replace(old_str,new_str)
replace(old_str,new_str,count)
count表示如果字符串中old_str出现多次,替换第count次出现的old_str
举例如下:
str = "你是谁"
new_str = str.replace("你", "我")
print(str)
print(new_str)
运行结果:
你是谁
我是谁
3.字符串查找和切片
查找:
使用find方法实现,该方法可返回查找字符串第一次出现的位置, 查找字符串不存在则会返回-1.
position=find(“str”)
position=find(“str”,0,10) 表示在某个范围内查找
查找默认返回的是被查找字符串的位置,下标从0开始
str="hello world! hello python"
str1= str.find("e")
print(str1)
运行结果:
1
# 没有查找到字符串a,所以结果返回的是-1
str="hello world! hello python"
str1= str.find("a")
print(str1)
运行结果:
-1
切片:
获取某个范围内的字符串
方法:使用索引截取
str="abcdefg"
# 反转字符串
print(str[::-1])
# 左闭右开,即能获取到左边的,却获取不到右边的
print(str[1:5])
# 起始位置不写,默认从0开始,
print(str[:3])
# 同理,结束位置不写,默认到最后一个位置的下一个位置
print(str[2:])
运行结果:
gfedcba
bcde
abc
cdefg
# 位置也可以使用负数
print(str[-3:-1])
print(str[-8:-2:2])
运行结果:
ef
ace
步长:每隔多少个字符选取一个字符,组成一个新的序列
也可以为负数,表示倒着截取
str="abcdefg"
print(str[::2])
print(str[::-2]) # 倒着截取
运行结果:
aceg
geca
4.字符串的分割
分割:
方法:split(“a”)
以字母a分割两部分,两部分都不包括字母a
user_email="username@163.com"
result=user_email.split("@")
print(result)
运行结果:
['username', '163.com']
5.字符串去除两侧空格,是否为字母
去除字符串两侧空格
方法;strip()
注:此方法只能去除两侧的空格,中间位置的空格并不能去掉
str=" hello world!"
print(str)
str1=str.strip()
print(str1)
运行结果:
hello world!
hello world!
判断字符串中是否为字母
方法:isalpha()
注:如果字符串中出现了非字母(如空格),则不会输出结果
# 字符串str中有空格和!,所以不是全部都是字母,结果为NO
str=" hello world!"
print(str)
if str.isalpha():
print("YES")
else:
print("NO")
运行结果:
NO