Python 字符串操作详解
字符串(string)是 Python 中最常用的基础数据类型,属于不可变序列,一旦创建就无法修改原内容,所有字符串操作都是生成新字符串。本文将从定义、转义、格式化、索引、切片、遍历、常用方法七大核心维度,全面讲解字符串操作。
一、字符串定义
Python 中字符串是由单引号、双引号、三引号包裹的任意字符集合,支持空字符串、单行字符串、多行字符串三种形式。
1. 单行字符串
单引号 '' 和双引号 "" 作用完全一致,可互相嵌套(避免转义)。
# 单引号定义
str1 = 'Hello Python'
# 双引号定义
str2 = "Python 字符串"
# 引号嵌套
str3 = "I'm a student" # 双引号嵌套单引号,无需转义
str4 = '她说:"加油"' # 单引号嵌套双引号,无需转义
2. 多行字符串
三单引号 ''' '''、三双引号 """ """ 支持换行书写,可保留文本原始换行格式,常用于长文本、注释。
str5 = """这是
多行
字符串"""
str6 = '''
空行也会被保留
支持任意换行格式
'''
二、字符串转义
当字符串中需要出现特殊字符(换行、制表符、引号、反斜杠)时,需使用转义字符(以 \ 开头)实现。
|
转义字符 |
作用说明 |
示例 |
|---|---|---|
|
|
换行符 |
|
|
|
制表符(空格缩进) |
|
|
|
转义单引号 |
|
|
|
转义双引号 |
|
|
|
转义反斜杠 |
|
原始字符串(取消转义)
在字符串前加 r,所有转义字符失效,内容原样输出,常用于文件路径、正则表达式。
path = r"C:\Users\Desktop\test.txt"
print(path) # 原样输出,无转义报错
三、字符串格式化方法
Python 提供三种主流字符串格式化方式,用于动态拼接变量、规范输出格式。
1. % 占位符格式化(老式)
通过 %s(字符串)、%d(整数)、%f(浮点数)占位拼接数据。
name = "小明"
age = 18
score = 95.5
print("姓名:%s,年龄:%d,分数:%.1f" % (name, age, score))
# 输出:姓名:小明,年龄:18,分数:95.5
2. format() 方法格式化(通用)
通过 {} 作为占位符,支持位置传参、关键字传参、精度控制,兼容性强。
# 基础用法
print("姓名:{},年龄:{}".format("小明", 18))
# 关键字传参
print("姓名:{name},年龄:{age}".format(name="小红", age=20))
# 数值精度控制
print("圆周率:{:.2f}".format(3.14159)) # 保留2位小数
3. f-string 格式化(Python3.6+ 推荐)
语法简洁、效率最高,直接在 {} 中写入变量或表达式,日常开发首选。
name = "小李"
age = 19
print(f"姓名:{name},明年年龄:{age+1}")
print(f"圆周率:{3.14159:.2f}")
四、字符串索引
字符串是有序序列,每个字符都有专属索引下标,通过索引可精准获取单个字符,分为正索引和负索引。
1. 索引规则
-
正索引:从左到右,从 0 开始递增(0,1,2,3...)
-
负索引:从右到左,从 -1 开始递减(-1,-2,-3...),-1 代表最后一个字符
2. 索引取值语法
s = "Python"
print(s[0]) # P(第一个字符)
print(s[2]) # t(第三个字符)
print(s[-1]) # n(最后一个字符)
print(s[-3]) # h(倒数第三个字符)
注意:索引超出字符串长度会报错 IndexError。
五、字符串切片
切片用于截取字符串的子串,支持批量获取多个字符,不会修改原字符串,语法灵活。
1. 切片语法
字符串[起始索引:结束索引:步长]
-
取值规则:左闭右开,包含起始索引,不包含结束索引
-
步长:默认1(依次取值),正数从左向右,负数从右向左
-
起始索引省略:默认从开头开始;结束索引省略:默认截取到末尾
2. 切片示例
s = "abcdefg"
# 基础切片
print(s[1:4]) # bcd(索引1、2、3)
print(s[:3]) # abc(从开头到索引2)
print(s[3:]) # defg(从索引3到末尾)
# 步长切片
print(s[::2]) # aceg(隔1个字符取1个)
# 倒序切片(字符串反转)
print(s[::-1]) # gfedcba
六、字符串遍历
遍历即逐个读取字符串中的每个字符,常用于字符筛选、统计、修改等场景,有两种常用遍历方式。
1. 直接遍历字符(简洁)
s = "Python"
for char in s:
print(char) # 逐个输出 P y t h o n
2. 遍历索引+字符(精准定位)
s = "Python"
for idx, char in enumerate(s):
print(f"索引{idx}:{char}")
七、字符串常用方法
字符串自带大量内置方法,所有方法均返回新字符串,不修改原字符串,以下是开发高频用法。
1. 大小写转换
s = "Hello Python"
print(s.upper()) # 全部大写:HELLO PYTHON
print(s.lower()) # 全部小写:hello python
print(s.title()) # 每个单词首字母大写:Hello Python
print(s.capitalize())# 首字母大写,其余小写:Hello python
2. 去除空格/特殊字符
s = " python \n"
print(s.strip()) # 去除首尾所有空白(空格、换行、制表符)
print(s.lstrip()) # 去除左侧空白
print(s.rstrip()) # 去除右侧空白
# 去除指定字符
s2 = "===python==="
print(s2.strip("=")) # python
3. 查找与替换
s = "hello python hello world"
print(s.find("hello")) # 从左查找,返回首次索引:0,无则返回-1
print(s.rfind("hello")) # 从右查找,返回首次索引:12
print(s.count("hello")) # 统计字符出现次数:2
print(s.replace("hello", "hi")) # 替换字符:hi python hi world
4. 分割与拼接
# 分割:字符串转列表
s = "python,java,c++"
list1 = s.split(",") # 按逗号分割:['python', 'java', 'c++']
# 拼接:列表转字符串
list2 = ["我","爱","Python"]
s2 = "".join(list2) # 无间隔拼接:我爱Python
s3 = "-".join(list2) # 短横线间隔:我-爱-Python
5. 判断类方法(返回布尔值 True/False)
s1 = "123456"
s2 = "Python123"
s3 = "python"
print(s1.isdigit()) # 是否纯数字:True
print(s3.isalpha()) # 是否纯字母:True
print(s2.isalnum()) # 是否字母+数字:True
print(s.startswith("Py")) # 是否以指定字符开头:True
print(s.endswith("3")) # 是否以指定字符结尾:True
6. 对齐填充
s = "python"
print(s.center(10, "*")) # 居中对齐,总长度10,空缺补*:**python**
print(s.ljust(10, "-")) # 左对齐:python----
print(s.rjust(10, " ")) # 右对齐: python
更多推荐



所有评论(0)