python换行符问题:rn还是n?

python换行符问题:rn还是n?
最新回答
纯真ブ

2023-07-02 13:20:41

不同系统下默认的换行符不同。Windows使用\r\n,Unix使用\n,Mac使用\r。

这种“不同”在字符处理时会带来问题,例如line[-2]和line.strip()在不同平台返回的值可能不同。

解决方法:

Python 2使用wb和rb进行二进制读写,不会遇到换行问题。

使用rU读取文件,将所有换行符替换为\n。推荐使用此模式,只支持读入。

对比r和rU的使用效果。

Python 3中,通过open函数的newline参数控制Universal new line mode。默认开启,所有\n, \r, or \r\n被转换为\n。写入时,不指定newline则使用各系统默认的换行符,指定为newline='\n'则都替换为\n。

设置newline为None, '', '\n', '\r', '\r\n'控制Universal new line mode的行为。

参考文献:PEP 278 -- Universal Newline Support, Python 3 open: 2. Built-in Functions。