pin_drop当前位置:知识文库 ❯ 图文

Python字符串split方法

概述

str.split()方法是Python中用于将字符串分割成列表的方法,它按照指定的分隔符将字符串拆分为多个部分。split()是处理文本数据的核心方法之一,常用于解析CSV数据、处理用户输入、提取信息等场景。本篇教程将详细介绍split()方法的语法、指定分隔符、指定分割次数以及splitlines()方法。


split语法

str.split(sep=None, maxsplit=-1)方法返回一个由字符串分割后的子串组成的列表。

参数说明

参数 含义 是否必需
sep 分隔符 否,默认为任意空白字符
maxsplit 最大分割次数 否,默认不限制

基本用法

代码示例

s = "Hello World Python"
result = s.split()
print(result)

s = "one,two,three,four"
result = s.split(",")
print(result)

指定分隔符

默认分隔符(空白字符)

不指定sep时,以任意空白字符(空格、制表符、换行符等)作为分隔符,且连续的空白字符视为一个:

代码示例

s = "Hello   World\tPython\nJava"
result = s.split()
print(result)

s = "  前导空格  和  多个空格  "
result = s.split()
print(result)

提示:默认分割会自动去除空字符串元素和前后空白,这是最常用的分割方式。

指定分隔符

指定sep后,严格按照该分隔符分割,不会合并连续分隔符:

代码示例

s = "one,two,three,four"
print(s.split(","))

s = "2024-01-15"
print(s.split("-"))

s = "name:张三;age:25;city:北京"
print(s.split(";"))

s = "a  b  c"
print(s.split(" "))

提示:当指定空格为分隔符时,连续空格会产生空字符串元素,与默认行为不同。


指定分割次数

通过maxsplit参数限制分割次数,从左到右分割指定次数后,剩余部分作为最后一个元素:

代码示例

s = "one-two-three-four-five"

result = s.split("-", 1)
print(f"分割1次: {result}")

result = s.split("-", 2)
print(f"分割2次: {result}")

result = s.split("-", 3)
print(f"分割3次: {result}")
调用方式 结果
s.split("-", 1) ['one', 'two-three-four-five']
s.split("-", 2) ['one', 'two', 'three-four-five']
s.split("-", 3) ['one', 'two', 'three', 'four-five']

实际应用

代码示例

path = "C:/Users/Documents/report.pdf"
parts = path.split("/", 1)
print(f"盘符: {parts[0]}")
print(f"路径: {parts[1]}")

line = "key = value = more values"
key, value = line.split("=", 1)
print(f"键: {key.strip()}")
print(f"值: {value.strip()}")

splitlines

str.splitlines()方法按照行边界符分割字符串,适用于处理多行文本:

代码示例

text = "第一行\n第二行\n第三行"
result = text.splitlines()
print(result)

text = "行1\r\n行2\r行3\n行4"
result = text.splitlines()
print(result)

splitlines与split("\n")的区别

代码示例

text = "第一行\n第二行\n"

result1 = text.split("\n")
print(f"split('\\n'): {result1}")

result2 = text.splitlines()
print(f"splitlines(): {result2}")
方法 末尾换行处理 支持的换行符 结果
split("\n") 末尾产生空字符串 \n ['第一行', '第二行', '']
splitlines() 末尾不产生空字符串 所有换行符 ['第一行', '第二行']

提示splitlines()能识别所有类型的换行符(\n\r\r\n等),且不会在末尾产生空字符串。

splitlines的keepends参数

代码示例

text = "第一行\n第二行\r\n第三行"

result = text.splitlines()
print(f"不含换行符: {result}")

result = text.splitlines(keepends=True)
print(f"保留换行符: {result}")

代码示例

综合运用split方法:

代码示例

csv_line = "张三,25,北京,工程师"
fields = csv_line.split(",")
print(f"姓名: {fields[0]}")
print(f"年龄: {fields[1]}")
print(f"城市: {fields[2]}")
print(f"职业: {fields[3]}")

url = "https://www.example.com:8080/path/to/page"
protocol, rest = url.split("://", 1)
host_port, path = rest.split("/", 1)
if ":" in host_port:
    host, port = host_port.split(":")
else:
    host, port = host_port, "80"
print(f"协议: {protocol}")
print(f"主机: {host}")
print(f"端口: {port}")
print(f"路径: /{path}")

log = """2024-01-15 10:30:00 INFO User logged in
2024-01-15 10:31:00 ERROR Database connection failed
2024-01-15 10:32:00 WARN Memory usage high"""

for line in log.splitlines():
    parts = line.split(" ", 3)
    date, time, level, message = parts
    print(f"[{level}] {date} {time} - {message}")

sentence = "Python is a great programming language"
words = sentence.split()
print(f"\n单词列表: {words}")
print(f"单词数量: {len(words)}")

注意事项

提示

  • 不指定分隔符时,连续空白字符合并为一个分隔符,且去除首尾空白

  • 指定分隔符时,连续分隔符会产生空字符串元素

  • 分隔符不存在时,返回包含原字符串的单元素列表

  • maxsplit限制的是分割次数,不是结果列表的长度

  • 处理多行文本优先使用splitlines()而非split("\n")

  • split()返回的是列表,可以通过解包赋值给多个变量


小结

本篇教程详细介绍了str.split()方法的用法,包括默认分割、指定分隔符、指定分割次数,以及splitlines()方法。split()是文本处理中最常用的方法之一,与join()互为逆操作。理解默认分割和指定分隔符的行为差异,以及splitlines()split("\n")的区别,是正确使用这些方法的关键。


练习题

练习1

给定一个URL字符串"https://www.example.com:8080/api/v1/users",使用split()方法提取出协议、域名、端口号和路径。

练习2

编写一个函数,接收一个多行字符串,统计每行的单词数量,返回一个包含每行单词数的列表。

常见问题

split()不指定分隔符和指定空格为分隔符有什么区别?

不指定分隔符时,split()会将连续的空白字符合并为一个分隔符,且自动去除首尾空白。而指定空格为分隔符时,连续空格会产生空字符串元素。例如:"a b".split()得到['a', 'b'],而"a b".split(" ")得到['a', '', 'b']。

splitlines()和split("\n")哪个更好?

处理多行文本时,推荐使用splitlines()。它能识别所有类型的换行符(\n、\r、\r\n等),而split("\n")只能识别\n。此外,splitlines()不会在末尾产生空字符串,更符合大多数使用场景的需求。

如何限制分割次数从右向左?

split()方法只支持从左到右分割。如果需要从右向左分割并限制次数,应使用rsplit()方法。例如:"a-b-c".rsplit("-", 1)会得到['a-b', 'c']。

split()返回的列表可以解包吗?

可以。如果split()返回的列表元素数量与变量数量匹配,可以直接解包。例如:key, value = "name=Alice".split("=")。但要注意,如果分割结果数量不匹配,会抛出ValueError异常。

分隔符不存在时split()返回什么?

当分隔符不存在于字符串中时,split()返回一个包含原字符串的单元素列表。例如:"hello".split(",")返回['hello']。这与字符串中没有分隔符、整个字符串作为一个部分的行为一致。

split()和join()是互逆操作吗?

在大多数情况下是的。对字符串使用split()分割成列表,再用相同的分隔符使用join()连接,通常可以恢复原字符串。但要注意,使用默认split()时会合并连续空白,这种情况下join()无法完全还原原始字符串的空白分布。

标签: Python split方法 字符串分割 splitlines 文本处理 Python教程

本文涉及AI创作

内容由AI创作,请仔细甄别

list快速访问

上一篇: Python字符串replace方法 下一篇: Python字符串join方法

poll相关推荐

作者头像 智能小晨 python

Python元组命名namedtuple

发布日期 2026-05-31
深入学习Python命名元组namedtuple,掌握字段访问、_make创建、_asdict转字典、_replace替换字段等核心方法。理解命名元组与普通元组的区别,写出更清晰易读的Python代码。
作者头像 智能小晨 python

Python元组解包

发布日期 2026-05-31
全面学习Python元组解包技巧,包括基本解包、星号扩展解包、嵌套解包、交换变量和函数多值返回。掌握优雅的Python赋值语法,让你的代码更简洁高效。
作者头像 智能小晨 python

Python元组index方法

发布日期 2026-05-31
深入学习Python元组index()方法,掌握元素索引查找技巧。了解index()语法、指定范围查找、安全查找方法和实际应用场景,避免ValueError异常,提升Python编程效率。
作者头像 智能小晨 python

Python元组count方法

发布日期 2026-05-31
深入学习Python元组count()方法,掌握元素出现次数统计技巧。了解count()语法、性能优化建议、嵌套元组统计和实际应用场景,配合练习题巩固所学知识。