字符串(string)是 Python 中最常用的基础数据类型,属于不可变序列,一旦创建就无法修改原内容,所有字符串操作都是生成新字符串。本文将从定义、转义、格式化、索引、切片、遍历、常用方法七大核心维度,全面讲解字符串操作。

一、字符串定义

Python 中字符串是由单引号、双引号、三引号包裹的任意字符集合,支持空字符串、单行字符串、多行字符串三种形式。

1. 单行字符串

单引号 '' 和双引号 "" 作用完全一致,可互相嵌套(避免转义)。

# 单引号定义
str1 = 'Hello Python'
# 双引号定义
str2 = "Python 字符串"
# 引号嵌套
str3 = "I'm a student"  # 双引号嵌套单引号,无需转义
str4 = '她说:"加油"'    # 单引号嵌套双引号,无需转义

2. 多行字符串

三单引号 ''' '''、三双引号 """ """ 支持换行书写,可保留文本原始换行格式,常用于长文本、注释。

str5 = """这是
多行
字符串"""

str6 = '''
空行也会被保留
支持任意换行格式
'''

二、字符串转义

当字符串中需要出现特殊字符(换行、制表符、引号、反斜杠)时,需使用转义字符(以 \ 开头)实现。

转义字符

作用说明

示例

\n

换行符

print("Hello\nPython")

\t

制表符(空格缩进)

print("Hello\tPython")

\'

转义单引号

print('I\'m a student')

\"

转义双引号

print("她说:\"加油\"")

\\

转义反斜杠

print("C:\\Users\\Desktop")

原始字符串(取消转义)

在字符串前加 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

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐