Python中换行符统一用\n,跨平台通用;读文件时open()默认启用universal newlines自动归一化\r\n、\n、\r为\n;print()默认末尾加\n,无需手动添加。
Python 中换行用 \n,这是通用且跨平台的写法;Windows 下读取文件时可能遇到 \r\n,需注意清洗;打印时 print() 默认自带换行,不必手动加 \n。
\n
Python 字符串中表示“换行”的转义字符是 \n,它对应 ASCII 的 Line Feed(LF),在 Linux/macOS 和绝大多数现代场景下都有效。
"Hello\nWorld" 在终端或文件中会显示为两行repr() 查看字符串内容可确认: repr("a\nb") # 返回 'a\\nb'\N(这是 Unicode 名称转义)或 \012(八进制写法,不直观)\n —— Windows 文本常含 \r\n,需清理\r\n、\n、甚至 \r
不同系统保存文本时用的行结束符不同:Windows 用 \r\n,macOS(旧版)用 \r,Linux/macOS(新版)用 \n。Python 的内置 open() 在文本模式下默认启用 universal newlines(通用换行),会自动把所有类型统一转成 \n。
with open("file.txt") as f:
lines = f.readlines() # 每个元素末尾是 \n,不管原始是 \r\n 还是 \nopen("file.txt", "rb"),但返回的是 bytes,不能直接当字符串用\r(比如从 Windows 剪贴板粘贴过来的文本):text.replace("\r\n", "\n").replace("\r", "\n")
print() 默认输出 \n,别画蛇添足调用 print() 时,它会在输出末尾自动加一个换行符 —— 即默认参数 end="\n"。因此多数情况下不需要在字符串末尾再写 \n。
print("hello\n") # 输出两行空行print("hello", end="")print("a", "b", sep=" | ") # 输出 a | bNone 导致 TypeError)真正容易出问题的地方不是“该用哪个字符”,而是混用场景:比如正则匹配行首行尾时,^ 和 $ 是否匹配 \r\n 中的 \r;又比如用 str.split("\n") 处
理未归一化的文本,会导致空行或截断。这些细节往往只在跨平台协作或解析外部数据时暴露。