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),而且默认会自动忽略字符串末尾的 “最后一个行边界符”,而不会产生冗余的空字符串。
