''.join(x.splitlines(keepends=True)[2:])
splitlines 产生一个字符串列表。如果给定keepends=True,则在结果列表中包含换行符l,''.join(l) 可用于重现原始字符串。
请注意,splitlines 适用于许多不同的行边界,例如\u2028
>>> x = 'a\u2028b\u2028c\u2028'
>>> ''.join(x.splitlines(keepends=True)[2:])
'c\u2028'
虽然split('\n') 在这种情况下失败:
>>> x = 'a\u2028b\u2028c\u2028'
>>> x.split('\n',2)[2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
另请注意,如果在空字符串或以换行符结尾的字符串上调用 splitlines 和 split('\n'),它们的行为会有所不同。比较以下示例(复制自splitlines 的文档):
>>> "".splitlines()
[]
>>> "One line\n".splitlines()
['One line']
>>> ''.split('\n')
['']
>>> 'Two lines\n'.split('\n')
['Two lines', '']
但是,如果给出keepends=True,则会保留尾随的换行符:
>>> "One line\n".splitlines(keepends=True)
['One line\n']
更多示例和splitlines 视为线边界的列表可在此处找到:
https://docs.python.org/3/library/stdtypes.html?highlight=split#str.splitlines