字符串的分割、拼接和替换是编程中处理文本数据的基础操作,几乎所有涉及文本处理的场景都会用到这些能力,掌握这些操作能大幅提升文本处理的效率。

字符串分割操作
字符串分割指的是按照指定的分隔符,将原始字符串拆分成多个子字符串,返回的结果通常是列表或者数组形式。在Python中,最常用的分割方法是split(),它默认按照空白字符分割,也可以指定自定义分隔符。
基础分割示例
# 默认按空白字符分割
text = "hello world python"
result = text.split()
print(result) # 输出 ['hello', 'world', 'python']
# 指定分隔符分割
csv_text = "name,age,city"
csv_result = csv_text.split(",")
print(csv_result) # 输出 ['name', 'age', 'city']
限制分割次数
如果只需要分割前N个分隔符,可以传入maxsplit参数,控制分割的次数。
text = "a-b-c-d-e"
# 只分割前2个分隔符
result = text.split("-", maxsplit=2)
print(result) # 输出 ['a', 'b', 'c-d-e']
字符串拼接操作
字符串拼接是将多个字符串合并成一个完整的字符串,常见的方法有使用加号拼接、join()方法拼接,还有格式化拼接的方式。
加号拼接
加号拼接适合少量字符串的合并,语法简单直观,但如果拼接大量字符串,效率会比较低。
str1 = "Hello" str2 = " " str3 = "World" result = str1 + str2 + str3 print(result) # 输出 Hello World
join()方法拼接
join()方法是拼接大量字符串的首选,它接收一个可迭代对象,将里面的元素用调用该方法的字符串连接起来,效率远高于加号拼接。
str_list = ["Hello", "World", "Python"] # 用空格拼接列表中的字符串 result = " ".join(str_list) print(result) # 输出 Hello World Python # 用换行符拼接 lines = ["第一行", "第二行", "第三行"] result = "n".join(lines) print(result) # 输出: # 第一行 # 第二行 # 第三行
字符串替换操作
字符串替换指的是将字符串中指定的子串替换成新的内容,Python中常用replace()方法实现,也可以结合正则表达式处理更复杂的替换场景。
基础替换示例
replace()方法接收两个必填参数,第一个是要被替换的旧子串,第二个是替换后的新子串,还可以传入第三个可选参数控制替换的最大次数。
text = "apple banana apple orange"
# 替换所有apple为pear
result = text.replace("apple", "pear")
print(result) # 输出 pear banana pear orange
# 只替换第一个apple
result2 = text.replace("apple", "pear", 1)
print(result2) # 输出 pear banana apple orange
正则替换
如果需要替换符合某种规则的子串,比如替换所有数字,就需要用到re模块的sub()方法。
import re text = "我的电话是123456,他的电话是789012" # 替换所有数字为* result = re.sub(r"d+", "*", text) print(result) # 输出 我的电话是*,他的电话是*
操作注意事项
- 字符串在Python中是不可变类型,所有的分割、拼接、替换操作都会返回新的字符串,不会修改原始字符串。
- 使用
split()分割不存在的分隔符时,会返回包含原始字符串的列表,不会报错。 join()方法的可迭代对象中的元素必须是字符串类型,否则会抛出类型错误,拼接前需要先将非字符串元素转成字符串。- 正则替换适合复杂规则的替换场景,但性能比
replace()稍低,非必要场景优先使用replace()。