Python 字符串 splitlines() 方法

Python splitlines() 语法

splitlines() 是 Python 字符串的一个方法,它会在字符串的行边界符(如 \n、\r 等)处进行分割字符串,然后返回一个列表。

语法:

str.splitlines(keepends=False)

说明:

splitlines() 方法接收单个参数。

  • keepends(可选,默认值:False):是一个布尔值。如果值为 False,则不包含行边界符;如果值为 True,则保留行边界符。
常见的行边界符
行边界符 说明
\r 回车
\n 换行
\r\n 回车 + 换行
\v 或 \x0b 行表格
\f 或 \x0c 换页
\x1c 文件分隔符
\x1d 组分隔符
\x1e 记录分隔符
\x85 下一行
\u2028 行分隔符
\u2029 段落分隔符

提示:

  • 如果字符串是空字符串,则 splitlines() 返回一个空列表 “[]” 。
  • 如果字符串只包含行边界符,并且 keepends=False,则 splitlines() 会返回一个包含空字符串的列表。
  • splitlines() 与 split('\n')  不同,它能识别多种换行符,且默认不保留行边界符。

Python splitlines() 摘要

使用频率
修改原字符串
官方文档 查看
相关方法 split()strip()join()

Python splitlines() 示例

接下来,我们通过几个简单的例子来讲解 Python splitlines() 方法是如何使用的。

示例 1:splitlines() 基本用法

s = 'Python\nC++\nJava\nGo\nRust'
result = s.splitlines()
print(result)

运行结果如下。

['Python', 'C++', 'Java', 'Go', 'Rust']

分析:

s.splitlines() 等价于 s.splitlines(False),此时行边界符并不会包含到结果中去。

示例 2:splitlines() 的参数为 True

s = 'Python\nC++\nJava\nGo\nRust'
result = s.splitlines(True)
print(result)

运行结果如下。

['Python\n', 'C++\n', 'Java\n', 'Go\n', 'Rust']

分析:

s.splitlines(True) 表示会将行边界符包含到结果中去。

示例 3:多行字符串使用 splitlines()

s = '''Python
C++
Java
Go
Rust'''
result = s.splitlines()
print(result)

运行结果如下。

['Python', 'C++', 'Java', 'Go', 'Rust']

分析:

对于这个例子来说,如果将 s.splitlines() 改为 s.splitlines(True),再次运行后结果如下。

['Python\n', 'C++\n', 'Java\n', 'Go\n', 'Rust']

示例 4:空字符串使用 splitlines()

s = ''
result = s.splitlines()
print(result)

运行结果如下。

[]

分析:

如果是空字符串使用 splitlines(),那么会返回一个空列表。

示例 5:splitlines() 与 split('\n') 对比

s = 'Python\nC++\nJava\n'
print(s.splitlines())
print(s.split('\n'))

运行结果如下。

['Python', 'C++', 'Java']
['Python', 'C++', 'Java', '']

分析:

这是一个非常经典的面试易错题!对于 split('\n') 来说,它只是机械地以 '\n' 为分割符,由于字符串末尾有一个 '\n',所以它会切分出一个多余的空字符串 ''。

而 splitlines() 是专门用于处理文本行的,它不仅能自动识别多种平台的换行符(如 \r、\n、\r\n),而且默认会自动忽略字符串末尾的 “最后一个行边界符”,而不会产生冗余的空字符串。

上一篇: rpartition()

下一篇: removeprefix()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号