[英]disable the automatic change from \r\n to \n in python
我在 ubuntu 下的 python3.4 脚本上工作,我在其中接收在 Windows 下生成的文件(编码为 UTF-8)的参数。 我必须逐行查看文件(由\r\n
分隔),知道“行”包含一些我想保留'\n'
。
我的问题是 Python 在打开文件时将文件的"\r\n"
转换为"\n"
。 我尝试以不同的模式打开( "r"
、 "rt"
、 "rU"
)。
我找到的唯一解决方案是以二进制模式而不是文本模式工作,以"rb"
模式打开。
有没有办法在不以二进制模式或正确的方式工作的情况下做到这一点?
将newline
关键字参数设置为open()
为'\\r\\n'
,或者设置为空字符串:
with open(filename, 'r', encoding='utf-8', newline='\r\n') as f:
这告诉Python只在\\r\\n
行终止符上拆分行; \\n
在输出中保持不变。 如果将其设置为''
,则\\n
也被视为行终止符,但\\r\\n
未转换为\\n
。
从open()
函数文档 :
换行符控制通用换行模式的工作方式(仅适用于文本模式)。 它可以是
None
,''
,'\\n'
,'\\r'
和'\\r\\n'
。 [...]如果是''
,则启用通用换行模式,但行结尾将返回给调用者未翻译。 如果它具有任何其他合法值,则输入行仅由给定字符串终止,并且行结尾将返回给未调用的调用者。
大胆强调我的。
Martijn Pieters的解决方案是:
with open(filename, "r", newline='\r\n') as f:
此答案作为对问题的编辑发布,禁止由 CC BY-SA 3.0 下的 OP lu1her 在 python 中从 \r\n 自动更改为 \n 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.