Python字符串
目录
一、字符串简介
1.1 字符串的定义
字符串(String)是由零个或多个字符组成的有限序列,是编程中常用的基本数据类型。在大多数编程语言中,字符串通常用双引号(")或单引号(')括起来表示。
除此之外三引号(""")或(''')也可以声明字符串,使用三引号表示的字符串会保留其引号内部原有的格式。【三引号】
例如,在 Python 中,字符串可以定义为:
string1 = "Hello, World!"
string2 = 'Hello, World!'
1.2 字符串的特性
字符串具有以下主要特性:
-
不可变性:字符串一旦创建,其内容不可更改。若需修改,只能通过创建新的字符串实现。
-
有序性:字符串中的字符按特定顺序排列,可通过索引访问每个字符。
-
可迭代性:字符串可以被遍历,例如使用循环访问每个字符。
1.3 字符串的底层存储结构
在计算机底层,Python中的字符串是一段连续的内存地址。

注意:索引下标从0开始
索引下标是编程中用于快速访问数据结构(如数组、列表、字符串等)中特定元素的位置标识。
下面是一个简单的Python示例来说明索引的用途:
# 创建一个学生名单列表
students = ["张三", "李四", "王五", "赵六", "钱七"]
# 使用索引访问特定位置的学生
print("第一名学生:", students[0]) # 索引从0开始
print("第三名学生:", students[2])
print("最后一名学生:", students[-1]) # 负数索引表示从末尾开始计数
# 修改特定位置的学生信息
students[1] = "李四(转学)"
print("更新后的名单:", students)
输出结果:
第一名学生: 张三
第三名学生: 王五
最后一名学生: 钱七
更新后的名单: ['张三', '李四(转学)', '王五', '赵六', '钱七']
二、字符串切片
2.1 什么是切片
切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
2.2 切片使用方式(语法)
序列[开始位置下标:结束位置下标:步长]
-
不包含结束位置下标对应的数据,正负数均可。
-
步长:选取间隔,正负均可,不能为零,默认步长为1。
-
索引从0开始,负索引表示从字符串末尾开始计数
-
省略start表示从开头开始,省略end表示到末尾结束
示例:
# 示例1:基本切片操作
text = "Hello, World!"
print(text[0:5]) # 输出: Hello (索引0到4)
print(text[7:12]) # 输出: World (索引7到11)
print(text[:5]) # 输出: Hello (从开始到索引4)
print(text[7:]) # 输出: World! (从索引7到结束)
# 示例2:使用步长
alphabet = "abcdefghijklmnopqrstuvwxyz"
print(alphabet[0:26:2]) # 输出: acegikmoqsuwy (每隔一个字符)
print(alphabet[::3]) # 输出: adgjmpsvy (每隔两个字符)
print(alphabet[::-1]) # 输出: zyxwvutsrqponmlkjihgfedcba (反转字符串)
# 示例3:负索引切片
message = "Python Programming"
print(message[-11:-1]) # 输出: Programmin (从倒数第11个到倒数第2个)
print(message[-11:]) # 输出: Programming (从倒数第11个到结束)
print(message[:-12]) # 输出: Python (从开始到倒数第13个)
2.3 切片规则⭐⭐⭐
-
[:] 提取整个字符串
-
[start:] 从start索引开始到结尾
-
[:end] 从开始到end-1
-
[start:end] 从start到end-1
-
[start:end:step] 从start到end-1,步长是step
-
[::-1] 倒着获取整个字符串(相当于将字符串倒序排列)
三、字符串常用方法
3.1 字符串查找
-
find()函数
find():检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标(即首个匹配项的下标),否则返回-1
基本语法:
字符串序列.find(子串,开始位置下标,结束位置下标)
【注意】:开始和结束位置下标可以省略,表示再生个字符串序列中查找。
s = 'hello world and hello python' print(s.find('hello')) # 0 print(s.find('hello',10,27)) # 16 print(s.find('z')) # -1 -
index()函数
index():检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标(即首个匹配项的下标),否则报异常。
基本语法:
字符串序列.index(子串,开始位置下标,结束位置下标)
s = 'hello world and hello python'
print(s.index('hello')) # 0
print(s.index('hello',10,27)) # 16
print(s.index('z')) # 抛出异常
3.2 字符串修改
由于字符串是不可变类型,所以修改的时候不能改变原有字符串,而是生成新的字符串
1. replace()函数——子串替换
replace():返回替换后的字符串(相当于生成了一个新的字符串)。
基本语法:
字符串序列.replace(旧子串,新子串,替换次数)
s = 'hello world and hello python'
print(s.replace('hello', 'goodbye'))
# goodbye world and goodbye python
print(s.replace('hello', 'goodbye', 1))
# goodbye world and hello python
print(s)
# hello world and hello python
2. 大小写转换
s = " Hello, World! "
# 大小写转换
print(s.upper()) # ' HELLO, WORLD! ' 全部转为大写
print(s.lower()) # ' hello, world! ' 全部转为小写
print(s.title()) # ' Hello, World! ' 所有单词的首字母大写
print(s.capitalize()) # ' Hello, world! ' 整个字符串的首字母大写
print(s.swapcase()) # ' hELLO, wORLD! ' 大小写转换(大->小;小->大)
3. 去除首尾信息
s = " *Hello, World!* "
print(s.strip()) # 默认去除首尾的空格
print(s.strip('*')) # 去除首尾的*
print(s.rstrip()) # 去除右边(尾部)的空格
print(s.lstrip()) # 去除左边(头部)的空格
3.3 字符串分割和拼接
1. split()函数——分割字符
split():按照指定字符分割字符串。
基本语法;
字符串序列.split('分割字符',num)
【注意】num是分割字符出现的次数,最后返回的数据个数是num+1个
s = "我是程序员,我喜欢,香蕉,苹果,敲代码"
print(s.split(','))
# ['我是程序员', '我喜欢', '香蕉', '苹果', '敲代码']
print(s.split(',',2))
# ['我是程序员', '我喜欢', '香蕉,苹果,敲代码']
2. 拼接字符串
a.使用“+”拼接字符串
s1 = 'Hello'
s2 = 'world'
print(s1+' '+s2+'!')
# Hello world!
b.join()函数:使用一个字符或子串合并字符串,即将多个字符串合并为一个新的字符串。
str_list = ['hello','world','!']
print(' '.join(str_list)) # hello world !
print('-'.join('hello')) # h-e-l-l-o
3.4 字符串判断
# 判断是否以该子串或字符开头
s.startswith('He') # True
# 是否以该子串或字符开头
s.endswith('123') # True
s.isalpha() # False (是否全字母)
s.isdigit() # False (是否全数字)
s.isalnum() # True (是否字母或数字)
# 是否全部小写
s.islower() # False
# 是否全部大写
s.isupper() # False
s.isspace() # False (是否空白字符)
3.5 字符串格式化
# f-string (Python 3.6+)
name = "Alice"
f"Hello, {name}!" # 'Hello, Alice!'
# format方法
"{} + {} = {}".format(2, 3, 5) # '2 + 3 = 5'
"{1} {0}".format("World", "Hello") # 'Hello World'
总结:
字符串是由单引号、双引号或者三单(双)引号围起来的一个序列。相当于列表[1,2,3 ]引号里面的每个字符都是一个元素,都可以使用索引和切片的方式访问其中一个元素或一个子串。
字符串是一种不可改变的常量,所谓的字符串更改和字符串内部发生改变,实际上是将修改后的新的字符串重新赋值给当前变量,也就是说:不是原来的字符串,而是诞生了一个新的字符串。
上述总结的是字符串的常用方法,其实还有很多方法,这里我们只学习基础的常用方法。
更多推荐

所有评论(0)