split(sep=None, maxsplit=-1)
sep
将字符串拆分为列表。sep
:分隔符(默认为空白字符,连续空白字符视为一个分隔符)。maxsplit
:最大分割次数(默认 -1
表示不限制)。s = "apple,banana,orange"
print(s.split(",")) # 输出: ['apple', 'banana', 'orange']
print("a b c".split()) # 输出: ['a', 'b', 'c'] (默认按空白分割)
print(s.split(",", 1)) # 输出: ['apple', 'banana,orange'] (只分割1次)
rsplit(sep=None, maxsplit=-1)
split()
。s = "apple,banana,orange"
print(s.rsplit(",", 1)) # 输出: ['apple,banana', 'orange']
splitlines([keepends=False])
\n
、\r\n
等)拆分为列表。keepends
:是否保留行分隔符(默认 False
)。s = "line1\nline2\r\nline3"
print(s.splitlines()) # 输出: ['line1', 'line2', 'line3']
print(s.splitlines(True)) # 输出: ['line1\n', 'line2\r\n', 'line3']
partition(sep)
sep
时,将其拆分为三部分:(分隔符前, 分隔符, 分隔符后)
。(原字符串, "", "")
。s = "apple,banana,orange"
print(s.partition(",")) # 输出: ('apple', ',', 'banana,orange')
print(s.partition(";")) # 输出: ('apple,banana,orange', '', '')
rpartition(sep)
partition()
,但从字符串右侧开始查找分隔符。s = "apple,banana,orange"
print(s.rpartition(",")) # 输出: ('apple,banana', ',', 'orange')
re.split()
)re
模块)。import re
s = "apple123banana456orange"
print(re.split(r"\d+", s)) # 输出: ['apple', 'banana', 'orange']
Python 的 re.split()
方法 | 方向 | 返回结果 | 适用场景 |
---|---|---|---|
split() |
从左 | 列表(不含分隔符) | 通用分割 |
rsplit() |
从右 | 列表(不含分隔符) | 从右限制分割次数 |
splitlines() |
- | 按行分割的列表 | 多行文本处理 |
partition() |
首次 | 三元组(包含分隔符) | 提取分隔符前后部分 |
rpartition() |
末次 | 三元组(包含分隔符) | 从右提取分隔符前后 |
re.split() |
- | 支持正则的列表 | 复杂分隔符(如多个符号) |
# 分割 CSV 文件行(处理多余空格)
csv_line = " apple, banana , orange "
items = [s.strip() for s in csv_line.split(",")]
print(items) # 输出: ['apple', 'banana', 'orange']
# 提取文件名和扩展名
filename = "data.txt"
name, _, ext = filename.partition(".")
print(f"文件名: {name}, 扩展名: {ext}") # 输出: 文件名: data, 扩展名: txt
join()
方法详解join()
是 Python 中最高效的字符串拼接方法,特别适合处理列表、元组等可迭代对象中的多个字符串。它的核心功能是用指定的字符串作为“胶水”,将一个可迭代对象的所有元素拼接成一个新字符串。
str.join(iterable)
str
:作为连接符的字符串(可以是空字符串 ""
或其他任意字符串)。iterable
:可迭代对象(如列表、元组、集合等),其元素必须全部是字符串类型。返回值:拼接后的新字符串(原字符串和可迭代对象不会被修改)。
+
运算符快:join()
在底层优化了内存分配,适合拼接大量字符串。+
会频繁创建临时字符串对象,而 join()
一次性完成拼接。TypeError
,需提前转换:nums = [1, 2, 3]
# 错误示例:",".join(nums) # TypeError!
# 正确做法:
", ".join(map(str, nums)) # 输出 "1, 2, 3"
"-".join(["a", "b", "c"]) # 输出 "a-b-c"
"".join(["a", "b", "c"]) # 输出 "abc"
"\n".join(["line1", "line2"]) # 输出多行文本
words = ["Python", "is", "powerful"]
sentence = " ".join(words) # 输出 "Python is powerful"
data = ["Alice", "25", "Engineer"]
csv_line = ",".join(data) # 输出 "Alice,25,Engineer"
parts = ["home", "user", "documents"]
path = "/".join(parts) # 输出 "home/user/documents"
lines = ["First line", "Second line", "Third line"]
text = "\n".join(lines) # 输出三行文本,每行换行
mixed = ["a", 123, "b"]
# 错误!TypeError: sequence item 1: expected str, found int
# 需先转换:
corrected = ", ".join(map(str, mixed)) # 输出 "a, 123, b"
empty_list = []
result = "-".join(empty_list) # 输出 "" (空字符串)
# 低效做法(循环中用 +)
result = ""
for s in ["a", "b", "c"]:
result += s # 每次循环创建新字符串
# 高效做法(join())
result = "".join(["a", "b", "c"])
s1 = "Hello"
s2 = "World"
result = s1 + " " + s2 # "Hello World"
特点:
name = "Alice"
age = 25
result = f"My name is {name}, age {age}." # "My name is Alice, age 25."
特点:
result = "{} {}".format("Hello", "World") # "Hello World"
特点:
result = "ha" * 3 # "hahaha"
特点:
-快速生成重复字符串。
方法 | 性能 | 适用场景 | 限制 |
---|---|---|---|
join() |
★★★★★ | 大量字符串拼接、列表/迭代对象 | 元素必须全为字符串 |
f-strings |
★★★★☆ | 动态变量嵌入、少量拼接 | Python 3.6+ 才支持 |
+ 运算符 |
★★☆☆☆ | 简单、少量拼接 | 频繁拼接性能差 |
format() |
★★★☆☆ | 复杂格式化需求 | 代码稍冗长 |
join()
?map(str, iterable)
转换)。""
、"-"
、"\n"
)。+
,优先选择 join()
。# 拼接列表中的字符串(用逗号分隔)
items = ["apple", "banana", "orange"]
result = ", ".join(items) # "apple, banana, orange"
# 拼接数字需先转字符串
numbers = [1, 2, 3]
result = "|".join(map(str, numbers)) # "1|2|3"
掌握 join()
能显著提升字符串处理效率!
根据需求选择合适的方法即可!