Python 以独立于平台的方式拆分两条新线路

Python 以独立于平台的方式拆分两条新线路,python,string,newline,Python,String,Newline,我需要以独立于平台的方式执行以下操作: 1) read the file with using codecs.open() (for utf-8) 2) split lines according to two new lines. 3) split entities according to new line 输入示例: 1) FIRST UTF-8 ENTITY ŞŞŞŞ\n 2) SECOND ELEMENT OF FIRST ENTITY\n \n\n 1) SECOND ENT

我需要以独立于平台的方式执行以下操作:

1) read the file with using codecs.open() (for utf-8)
2) split lines according to two new lines.
3) split entities according to new line
输入示例:

1) FIRST UTF-8 ENTITY ŞŞŞŞ\n 
2) SECOND ELEMENT OF FIRST ENTITY\n 
\n\n 
1) SECOND ENTITIY\n
2) SECOND ELEMENT OF SECOND ENTITIY\n
读取文件后,string.split('\n\n')在mac osx中工作,但它似乎不是独立于平台的处理方式(文件可能在另一个操作系统上准备)

我知道string.splitlines()独立于平台工作,但如何以独立于平台的方式在实体之间拆分两行新行


编辑:文件可以在任何平台上准备,因此可能有任何类型的行尾。

Python有一个内置的工具来处理这个问题:
os.linesep
。因此,您可以使用:

string.split(2*os.linesep)
使用通用模式打开文本文件

codecs.open(filename, 'U')

目前使用的分隔符主要有两种类型:
\n
-unices和
\r\n
-windows(
\r
在旧的mac os上使用,现在几乎没有使用)

简单的解决方案是用空字符串替换
\r
,然后只使用
\n
。如果要支持
\r
,请检查字符串中是否不存在
\n
,并将所有
\r
替换为
\n

下一个代码将
\r\n
\n\r
\n
\r
变体转换为
\n

if "\n" in data:
    data = data.replace("\r", "")
else:
    data = data.replace("\r", "\n")

如果我不知道文件是在哪个平台上准备的呢?例如,该文件是在windows上准备的,我可以在osx上解析它?它运行良好,我希望在python模块中处理这种情况,但这也很好,谢谢。