欢迎大家订阅【Python从入门到精通】专栏,一起探索Python的无限可能!
前言
在 Python 中,数据容器是组织和管理数据的重要工具,字符串作为其中一种基本的数据结构,具有独特的特性和广泛的应用。本章详细介绍了字符串的定义、下标索引、常用操作以及遍历方法。
本篇文章参考:黑马程序员
一、字符串的定义
字符串是字符的容器,一个字符串可以存放任意数量的字符。每个字符都可以被视为字符串的一个元素。
①定义方式:
方式一:双引号定义法
text1="我是字符串文本数据"
print(text1)
输出结果:
我是字符串文本数据
方式二:单引号定义法
text2='我也是字符串文本数据'
print(text2)
输出结果:
我也是字符串文本数据
方式三:三引号定义法
表示在一对三个双引号的范围内均是字符串。与多行注释的写法一样,同样支持换行操作,使用变量接收它,它就是字符串,不使用变量接收它,就可以作为多行注释使用。
text3="""我也是字符串文本数据"""
text4="""
在三个引号的包围圈内
全部都是
字符串文本数据
"""
print(text3)
print(text4)
输出结果:
我也是字符串文本数据
在三个引号的包围圈内
全部都是
字符串文本数据
②特点:
- 只可存储字符串
- 长度任意(取决于内存大小)
- 不可修改(增加或删除元素等)
- 允许重复字符串存在
- 支持下标索引
- 支持循环
③字符串和列表、元组的区别:
- 不同于列表不同于元组的在于:
字符串容器可以容纳的类型是单一的,只能是字符串类型 - 不同于列表相同于元组的在于:
字符串不可修改
二、字符串的下标索引
在 Python 中,字符串和其它容器(如列表、元组)一样,也可通过下标进行访问。
注意:字符串中的每个字符(包括字母、数字、标点符号以及空格)都被视为单独的元素。
①基本语法:
字符串[标号]
②索引范围:
如下图,字符串中的每一个元素,都有其位置下标索引。我们只需要按照下标索引,即可取得对应位置的元素。
正向的下标索引:从前向后的方向,从0开始,依次递增(0、1、2……)。
注意:下标索引的取值不能超出取值范围,否则无法取出元素并且会报错。
#通过下标索引取值
my_str="Hello Python"
value1=my_str[2]
print(f"从字符串{my_str}取下标为2的元素,结果为{value1}")
# 错误示范:报错IndexError: string index out of range
# value=my_str[16]
输出结果:
从字符串Hello Python取下标为2的元素,结果为l
反向的下标索引:从后向前:从-1开始,依次递减(-1、-2、-3…)。
my_str="Hello Python"
value2=my_str[-10]
print(f"从字符串{my_str}取下标为-10的元素,结果为{value2}")
输出结果:
从字符串Hello Python取下标为-10的元素,结果为l
三、字符串的常用操作(方法)
字符串的常用方法:
①查找元素下标:
查找指定元素在字符串的下标,如果找不到,则报错ValueError。
语法:字符串.index(字符串)
# index方法
my_str="Hello Python"
value=my_str.index("Python")
print(f"从字符串{my_str}中查找Python,其起始下标为{value}")
# 错误示范:会报错 ValueError: substring not found
# value=my_str.index("a")
输出结果:
在从字符串Hello Python中查找Python,其起始下标为6
②统计元素个数:
方式一:统计字符串中某元素的出现次数
语法:字符串.count(字符串)
# count统计方法
my_str="Hello Python"
num=my_str.count("o")
print(f"字符串{my_str}中o的数量为{num}")
输出结果:
字符串Hello Python中o的数量为2
方式二:统计字符串的长度
语法:len(字符串)
# len函数统计字符串长度
my_str="Hello Python"
num= len(my_str)
print(f"字符串{my_str}的长度为{num}")
输出结果:
字符串Hello Python的长度为12
③字符串的替换:
语法:字符串.replace(字符串1,字符串2)
注意:不是修改字符串本身,而是得到了一个新字符串
# replace方法
my_str="Hello Python"
new_my_str=my_str.replace("Hello","Hi")
print(f"将字符串{my_str}进行替换后得到{new_my_str}")
输出结果:
将字符串Hello Python进行替换后得到Hi Python
可以看到,字符串my_str本身并没有发生变化,而是得到了一个新字符串对象new_my_str。
④字符串的分割:
按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中。
语法:字符串.split(分隔符字符串)
注意:字符串本身不变,而是得到了一个列表对象
# split方法
my_str="Hello Python Hello World"
# 按照空格进行切分
new_str_list=my_str.split(" ")
print(f"将字符串{my_str}进行切分后得到{new_str_list},类型是{type(new_str_list)}")
输出结果:
将字符串Hello Python Hello World进行切分后得到[‘Hello’, ‘Python’, ‘Hello’, ‘World’],类型是<class ‘list’>
可以看到,字符串按照给定的 “空格”进行了分割,变成多个子字符串,并存入一个列表对象中。
⑤字符串的规整操作:
方式一:去除前后空格:
语法:字符串.strip()
# strip方法
my_str=" Hello Python Hello World "
# 不传入参数,去除首尾空格
new_my_str=my_str.strip()
print(f"字符串{my_str}被strip后,结果为{new_my_str}")
输出结果:
字符串 Hello Python Hello World 被strip后,结果为Hello Python Hello World
方式二:去除前后指定字符串
语法:字符串.strip(字符串)
my_str="134Hello Python Hello World431"
new_my_str=my_str.strip("134")
print(f"字符串{my_str}被strip后,结果为{new_my_str}")
输出结果:
字符串134Hello Python Hello World431被strip后,结果为Hello Python Hello World
注意:传入的字符串“134” 其实就是传入字符“1”、“3”和“4”,strip() 方法会分别检查字符串的开头和结尾,并按照单个字符“1”、“3”和“4”去除指定字符,所以开头的“134”以及结尾的的“431”都会被去除。
四、字符串的遍历
①while循坏遍历:
定义一个变量表示下标,从0开始。
循环条件为:下标值 < 元组的元素数量
基本语法:
index = 0
while index < len(字符串):
元素 = 字符串[index]
对元素进行处理
index += 1
#字符串的遍历:while
my_str="Hello Python"
index=0
while index<len(my_str):
element=my_str[index]
print(element,end='')
index+=1
输出结果:
Hello Python
②for循坏遍历:
从容器内,依次取出元素并赋值到临时变量上。在每一次的循环中,我们可以对临时变量(元素)进行处理。
基本语法:
for 临时变量 in 数据容器:
对临时变量进行处理
#字符串的遍历:for
my_str="Hello Python"
for element in my_str:
print(element,end='')
输出结果:
Hello Python
for循环和while循坏遍历对比:
- for循环更简单,while更灵活
- for循环适用于,遍历数据容器的场景或简单的固定次数循环场景;while循环适用于任何想要循环的场景