以平台无关的方式拆分双新行
Split double new lines in platform independent manner
我需要以独立于平台的方式遵循:
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 中工作,但它似乎不是平台独立的处理方式(文件可能会在另一个 os) 上准备。
我知道 string.splitlines() 独立于平台工作,但如何以独立于平台的方式在实体之间拆分两条新线?
编辑:文件可能在任何平台上准备,因此可能有任何类型的行尾。
Python 有一个内置工具来处理这个问题:os.linesep
。所以你可以使用:
string.split(2*os.linesep)
使用通用模式打开文本文件。
codecs.open(filename, 'U')
目前使用的分隔符主要有两种类型:\n
- unices 和 \r\n
- windows(\r
用于旧的 mac os 并且它是 almost 现在没有使用)
简单的解决方案是将 \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")
我需要以独立于平台的方式遵循:
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 中工作,但它似乎不是平台独立的处理方式(文件可能会在另一个 os) 上准备。
我知道 string.splitlines() 独立于平台工作,但如何以独立于平台的方式在实体之间拆分两条新线?
编辑:文件可能在任何平台上准备,因此可能有任何类型的行尾。
Python 有一个内置工具来处理这个问题:os.linesep
。所以你可以使用:
string.split(2*os.linesep)
使用通用模式打开文本文件。
codecs.open(filename, 'U')
目前使用的分隔符主要有两种类型:\n
- unices 和 \r\n
- windows(\r
用于旧的 mac os 并且它是 almost 现在没有使用)
简单的解决方案是将 \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")