Python换行符的作用_Python换行符在输出格式控制中的功能

28次阅读

print()默认换行因end参数默认值为’n’,连续调用会输出’anbn’;可改end=”取消换行、end=’ ‘加空格;写文件时文本模式自动转换n为系统换行符,二进制模式可禁用;正则中.默认不匹配n,需re.DOTALL,^$需re.MULTILINE才匹配每行。

Python换行符的作用_Python换行符在输出格式控制中的功能

print() 默认换行是怎么回事

pythonprint() 函数默认会在输出末尾自动添加一个 n(LF 换行符),这是它“看起来换行了”的根本原因。这个行为由参数 end 控制,其默认值就是 'n'

如果你连续写两行 print('a'); print('b'),实际输出是:

a b

因为第一个 print 输出 'an',第二个输出 'bn'

  • 想取消换行?改 end='':比如 print('a', end=''); print('b') 输出 ab
  • 想用空格隔开?end=' ':输出 a b (注意末尾也有空格)
  • windows 下文件写入需 rn?别手动拼,用 open(..., newline='') 让 Python 自动处理行结束符

字符串里的 n、r、rn 到底怎么用

在字符串字面量中,n 是换行(LF),r 是回车(CR)。它们的组合效果取决于终端或编辑器如何解释:

立即学习Python免费学习笔记(深入)”;

  • 'hellonworld' → 两行显示(绝大多数现代环境都支持 n
  • 'hellorworld' → 在支持 CR 的终端里,“world”会覆盖“hello”的位置(光标回到行首但不换行)
  • 'hellornworld'windows 风格换行,等价于先回车再换行;但在 Python 字符串中它只是两个字符,不是特殊语法

注意:rn 不是 Python 的内置换行符常量,它只是两个转义字符连写。Python 自己的 os.linesep 才是当前系统的换行符(Windows 是 'rn'linux/macOS 是 'n')。

写文件时换行符被自动转换怎么办

open(..., 'w') 写入含 n 的字符串时,Python 在文本模式下会自动将 n 转为系统原生换行符(即 os.linesep)。这通常是你想要的,但有时会干扰跨平台一致性(比如生成给 Windows 程序读的配置文件,却在 Linux 上写出了 n)。

  • 要强制写 n 不转换?用二进制模式:open('f.txt', 'wb').write(b'line1nline2n')
  • 要确保写 rn?显式写入:f.write('line1rnline2rn')(前提是文本模式,且你确定目标环境需要)
  • newline='' 参数可禁用通用换行符处理(仅影响 nrn 转换,不影响 r

正则匹配多行时 n 为什么经常被忽略

默认情况下,正则表达式. 元字符**不匹配换行符**,^$ 只匹配字符串开头和结尾,而不是每行的开头结尾——这导致看似“多行”的字符串匹配失败。

  • . 匹配 n?加 re.DOTALL 标志:re.search(r'a.b', s, re.DOTALL)
  • ^/$ 匹配每行首尾?加 re.MULTILINEre.findall(r'^d+', s, re.MULTILINE)
  • 混合使用:re.compile(r'pattern', re.DOTALL | re.MULTILINE)

最容易漏的是忘记传标志位,或者误以为 re.match() 支持多行锚点——它只从字符串开头匹配,和 re.MULTILINE 无关。

text=ZqhQzanResources