Python 字符串常用操作:截取、替换、查找与分割
在 Python 开发中,字符串处理是最基础且高频的操作。本文将详细介绍如何通过切片、内置方法对字符串进行截取、查找、分割及替换。
1. 字符串截取(切片)
Python 提供了灵活的切片语法 [start:stop] 来截取字符串。下标从 0 开始,支持正向和负向索引,且区间遵循"左闭右开"原则。
# 示例:使用切片获取子串
raw_text = "Python_Programming"
# 截取前 6 个字符
header = raw_text[0:6]
print(header) # 输出: Python
# 获取特定范围的字符
sub_content = raw_text[7:14]
print(sub_content) # 输出: Program
# 使用负索引截取末尾字符
ext_name = "report_2023.pdf"
suffix = ext_name[-3:]
print(suffix) # 输出: pdf
2. 字符串替换
使用 replace(old, new[, count]) 方法可以替换字符串中的指定内容。需要注意的是,Python 中的字符串是不可变对象,执行替换操作后会返回一个新字符串,而不会修改原始变量。
# 示例:替换字符串中的占位符
template = "Error_Code_500"
# 将 500 替换为 404
fixed_text = template.replace("500", "404")
print(fixed_text) # 输出: Error_Code_404
# 限制替换次数
mult_chars = "a-a-a-a"
limited_replace = mult_chars.replace("a", "b", 2)
print(limited_replace) # 输出: b-b-a-a
3. 字符串查找
find() 方法用于检索子字符串在目标串中首次出现的位置。如果找到则返回索引值(从 0 开始),否则返回 -1。
# 示例:定位关键字位置
log_msg = "Critical: Database connection failed"
keyword_pos = log_msg.find("Database")
if keyword_pos != -1:
print(f"找到关键字,位置起始于: {keyword_pos}")
else:
print("未匹配到结果")
# 输出结果: 找到关键字,位置起始于: 10
4. 字符串分割
split(sep[, maxsplit]) 方法根据指定的分隔符将字符串拆分为列表。如果不指定分隔符,默认以空格拆分。
# 示例:解析逗号分隔的数据
csv_row = "apple,banana,orange,grape"
fruit_list = csv_row.split(",")
for fruit in fruit_list:
print(f"提取到: {fruit}")
# 输出结果:
# 提取到: apple
# 提取到: banana
# 提取到: orange
# 提取到: grape
5. 反向检索 (rindex)
rindex() 方法的作用是返回子字符串在父字符串中最后一次出现的索引位置。其用法与 find() 类似,但区别在于:如果未找到匹配项,rindex() 会直接抛出 ValueError 异常,而不是返回 -1。
语法: str.rindex(sub[, start[, end]])
# 示例:查找子串最后出现的位置
path_string = "/usr/local/bin/python3"
target = "i"
# 获取最后一次出现的索引
last_pos = path_string.rindex(target)
# 获取第一次出现的索引供对比
first_pos = path_string.index(target)
print(f"最后出现的位置: {last_pos}") # 输出: 17
print(f"首次出现的位置: {first_pos}") # 输出: 12