平台:OS X Mountain Lion
Python 2.7.4
我有一段脚本需要将字符串中的所有 eol 字符转换为 unix 样式\n。我得到一个由 Qsci.Scintilla.text() 提供的字符串,下面引用为 txt。
print 'original text: %s' % repr(unicode(txt))
print 'linesep: %s' % repr(os.linesep)
print 'fixed text: %s' % repr(unicode(txt).replace(os.linesep, '\n'))
这显示如下输出:
original text: u'exp.cnvs.show()\rself.sleep(1000)'
linesep: '\n'
fixed text: u'exp.cnvs.show()\rself.sleep(1000)'
那里的所有 eol 字符都报告为 \r (据我所知,这对于 OS X 是正确的)。仍然 os.linesep 报告 \n 是 eol 字符,导致底部语句什么都不做。该声明的输出当然应该是:
fixed text: u'exp.cnvs.show()\nself.sleep(1000)'
有谁知道为什么 os.linesep 似乎在 OSX 上报告了错误的 eol 字符?