字符串
尽管字符串看起来并不像:列表、元组那样,一看就是存放了许多数据的容器。
但不可否认的是,字符串同样也是数据容器的一员。字符串是字符的容器,一个字符串可以存放任意数量的字符。
字符串的下标
和其它容器如:列表、元组一样,字符串也可以通过下标进行访问
- 从前向后,下标从0开始
- 从后向前,下标从-1开始
同元组一样,字符串是一个:无法修改的数据容器。
所以:
- 修改指定下标的字符 (如:字符串[0] = “a”)
- 移除特定下标的字符 (如:del 字符串[0]、字符串.remove()、字符串.pop()等)
- 追加字符等 (如:字符串.append())
均无法完成。如果必须要做,只能得到一个新的字符串,旧的字符串是无法修改
字符串的常用操作
通过下标索引取值
my_str = "wananliushisan"
# 通过下标索引取值
value = my_str[2]
value2 = my_str[-16]
print(f"从字符串{
my_str}取下标为2的元素,。值是:{
value},取下标为-16的元素。值是:{
value2}")
# my_str[2] = "H"
# index方法
# 查找特定字符串的下标索引值
# 语法:字符串.index(字符串)
value = my_str.index("and")
print(f"在字符串{
my_str}中查找and,其起始下标是:{
value}")
replace方法
语法:字符串.replace(字符串1,字符串2)
功能:将字符串内的全部:字符串1,替换为字符串2
注意:不是修改字符串本身,而是得到了一个新字符串
# replace方法
my_str = "wananliushisan"
new_my_str = my_str.replace("wan", "zao")
print(f"将字符串{
my_str},进行替换后得到:{
new_my_str}")
split方法
语法:字符串.split(分隔符字符串)
功能:按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中
注意:字符串本身不变,而是得到了一个列表对象
# split方法
my_str = "hello ni hao liu shi san"
my_str_list = my_str.split(" ")
print(f"将字符串{
my_str}进行split切分后得到:{
my_str_list}, 类型是:{
type(my_str_list)}")
strip方法
# strip方法
my_str = " wananliushisan "
new_my_str = my_str.strip() # 不传入参数,去除首尾空格
print(f"字符串{
my_str}被strip后,结果:{
new_my_str}")
my_str = "12iwananliushisan21"
new_my_str = my_str.strip("12")
print(f"字符串{
my_str}被strip('12')后,结果:{
new_my_str}")
统计
# 统计字符串中某字符串的出现次数, count
my_str = "wananliushisan"
count = my_str.count("an")
print(f"字符串{
my_str}中an出现的次数是:{
count}")
# 统计字符串的长度, len()
num = len(my_str)
print(f"字符串{
my_str}的长度是:{
num}")
字符串的特点
- 只可以存储字符串
- 长度任意(取决于内存大小)
- 支持下标索引
- 允许重复字符串存在
- 不可以修改(增加或删除元素等)
- 支持for循环
序列和切片
序列
序列是指:内容连续、有序,可使用下标索引的一类数据容器
列表、元组、字符串,均可以可以视为序列。
序列的常用操作 - 切片
序列支持切片,即:列表、元组、字符串,均支持进行切片操作
切片:从一个序列中,取出一个子序列语法:序列[起始下标:结束下标:步长]
表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列:
起始下标表示从何处开始,可以留空,留空视作从头开始
结束下标(不含)表示何处结束,可以留空,留空视作截取到结尾
步长表示,依次取元素的间隔
- 步长1表示,一个个取元素
- 步长2表示,每次跳过1个元素取
- 步长N表示,每次跳过N-1个元素取
- 步长为负数表示,反向取&#x