在 Python 中,字符串(String)是由零个或多个字符组成的不可变序列,用于表示文本数据。字符串可以使用单引号(" ")、双引号(" ")或三引号(""" """)来定义。
# 字符串定义示例
str1 = 'Hello, World!' # 单引号
str2 = "Python Programming" # 双引号
str3 = '''多行
字符串示例''' # 三引号(多行)
str4 = "" # 空字符串
字符串是 Python 中最常用的数据类型之一。
2. 转义
转义字符用于在字符串中表示那些无法直接输入或有特殊含义的字符。Python 使用反斜杠(\\)作为转义字符。
# 常见转义字符示例
print("换行符:第一行\\n第二行") # \\n 换行
print("制表符:姓名\\t年龄") # \\t 制表符
print("双引号:他说:\\"你好!\\"") # \\" 双引号
print("单引号:It\\'s OK") # \\' 单引号
print("反斜杠:路径 C:\\\\Users\\\\Admin") # \\\\ 反斜杠
print(r"C:\\Users\\Admin") # 添加一个r使" "中内容不变,一般用于路径
使用原始字符串(在引号前加 r)可以禁用转义,常用于正则表达式和文件路径:
raw_str = r"C:\\Users\\Admin\\Documents" # 反斜杠不会被转义
print(raw_str) # 输出:C:\\Users\\Admin\\Documents
3. 格式化方法
Python 提供了多种字符串格式化方式,用于将变量值插入到字符串中。
3.1 %
name = "Alice"
age = 25
print("姓名:%s,年龄:%d" % (name, age)) # 输出:姓名:Alice,年龄:25
3.2 str.format() 方法
print("姓名:{},年龄:{}".format(name, age)) # 位置参数
print("姓名:{0},年龄:{1}".format(name, age)) # 索引参数
print("姓名:{n},年龄:{a}".format(n=name, a=age)) # 关键字参数
3.3 f" {} "法
print(f"姓名:{name},年龄:{age}") # 直接嵌入表达式
print(f"明年年龄:{age + 1}") # 支持表达式计算
print(f"姓名大写:{name.upper()}") # 支持方法调用
4. 索引
字符串支持索引操作,通过下标访问单个字符。索引从 0 开始,也支持负索引(从 -1 开始表示最后一个字符)。
text = "Python"
print(text[0]) # 输出:P(正索引)
print(text[2]) # 输出:t
print(text[-1]) # 输出:n(负索引)
print(text[-3]) # 输出:h
索引越界会引发 IndexError
print(text[10]) # 错误:IndexError: string index out of range
字符串是不可变的,因此不能通过索引修改字符:
# text[0] = 'J' # 错误:TypeError: 'str' object does not support item assignment
5. 切片
切片(Slicing)用于获取字符串的子串,语法为 [start:stop:step]。
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 到结尾)
print(text[-6:-1]) # 输出:World(负索引切片)
print(text[::2]) # 输出:Hlo ol!(步长为 2)
print(text[::-1]) # 输出:!dlroW ,olleH(反转字符串)
切片是创建新字符串,不会修改原字符串。
6. 遍历
可以使用循环遍历字符串中的每个字符。
6.1 使用 for 循环
text = "Python"
for char in text:
print(char, end=' ') # 输出:P y t h o n
6.2 使用 enumerate() 获取索引和字符
for index, char in enumerate(text):
print(f"索引 {index}: 字符 '{char}'")
# 输出:
# 索引 0: 字符 'P'
# 索引 1: 字符 'y'
# 索引 2: 字符 't'
# 索引 3: 字符 'h'
# 索引 4: 字符 'o'
# 索引 5: 字符 'n'
6.3 使用 while 循环和索引
i = 0
while i < len(text):
print(text[i], end=' ')
i += 1 # 输出:P y t h o n
7. 常用方法
Python 字符串对象提供了丰富的内置方法。
7.1 大小写转换
text = "Hello, World!"
print(text.upper()) # 输出:HELLO, WORLD!
print(text.lower()) # 输出:hello, world!
print(text.title()) # 输出:Hello, World!
print(text.capitalize()) # 输出:Hello, world!
print(text.swapcase()) # 输出:hELLO, wORLD!
7.2 查找和替换
print(text.find("World")) # 输出:7(找到子串的起始索引)
print(text.find("Python")) # 输出:-1(未找到)
print(text.replace("World", "Python")) # 输出:Hello, Python!
print(text.count("l")) # 输出:3(统计字符出现次数)
7.3 去除空白字符
text2 = " Python "
print(text2.strip()) # 输出:Python(去除两端空白)
print(text2.lstrip()) # 输出:Python (去除左侧空白)
print(text2.rstrip()) # 输出: Python(去除右侧空白)
7.4 分割和连接
text3 = "apple,banana,orange"
fruits = text3.split(",") # 分割为列表:['apple', 'banana', 'orange']
print("-".join(fruits)) # 连接为字符串:apple-banana-orange
7.5 判断方法
print("123".isdigit()) # 输出:True(是否全为数字)
print("abc".isalpha()) # 输出:True(是否全为字母)
print("abc123".isalnum()) # 输出:True(是否全为字母或数字)
print("hello".startswith("he")) # 输出:True
print("world".endswith("ld")) # 输出:True




