作者从「怎么把一个多行文本按行拆开」这个看似简单的问题入手,挖掘出换行符背后的漫长历史。ASCII 时代留下了 LF、CR、CRLF 的分歧:CP/M 与 MS-DOS 用 CRLF,Unix 用 LF,Commodore 与 Apple 用 CR。Unicode 则在 5.0 版起通过 UAX #13 定义了一套正式的换行码点,新增了行分隔符 U+2028 与段落分隔符 U+2029。最令人意外的是 Python 的 splitlines() 还认三个来自双向算法 UAX #9 的信息分隔符(文件/分组/记录分隔符),因为它们属于双向类别 B、被当作段落分隔。作者最终厘清:Python 共把十一个码点(含 CRLF 这一序列)视为换行。