プラットフォーム: 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 af では正しいです)。それでも os.linesep は \n が eol 文字であると報告するため、一番下のステートメントは何もしません。もちろん、そのステートメントの出力は次のようになります。
fixed text: u'exp.cnvs.show()\nself.sleep(1000)'
OSXでos.linesepが間違ったeol文字を報告しているように見える理由を知っている人はいますか?