我正在ubuntu上使用Python3.4脚本工作,其中我接收一个在Windows下生成并编码为UTF-8的文件作为参数。我必须逐行(由\r\n
分隔)浏览该文件,知道这些“行”包含一些我想保留的'\n'
。
我的问题是,Python在打开文件时将文件的"\r\n"
转换为"\n"
。我尝试了使用不同模式("r"
,"rt"
,"rU"
)打开文件。
我找到的唯一解决方案是以二进制模式而不是文本模式工作,使用"rb"
模式打开文件。
有没有一种不使用二进制模式或正确的方法来解决这个问题?
'r'
是默认模式,除非您知道编码是utf-8
,否则可能不是正确的编码;在Windows上,utf-16
和特定于区域设置的代码页同样常见,甚至更常见)。 - ShadowRangerwith open(filename, 'r', encoding='utf-8', newline='\r\n') as f:
感谢提示。 - lu1herencoding
(作为UTF格式,8或16),并且在打开使用显式编码的自己脚本创建的文件或处理来自互联网的数据(其中utf-8
是标准)时也应该指定。但是当您的输入数据不是由您生成的,并且可能处于操作系统区域设置编码(例如,在大多数西欧/英语区域设置中为cp1252
)时,很难进行较好的解释。无论哪种方式都是一个难题。 - ShadowRanger