Платформа: OS X Mountain Lion
Python 2.7.4Python: некорректное os.linesep на OS X
У меня есть кусок сценария, который нужно преобразовать все символы Eol в строке в стиле Unix \ п. Я получаю строку, предоставленную 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 там приводятся как \ г (который является правильным для OS X аф насколько я знаю). Тем не менее os.linesep сообщает \ n, чтобы быть символом eol, в результате чего нижний оператор ничего не делает. Выходной сигнал этого заявления, конечно, должен был быть:
fixed text: u'exp.cnvs.show()\nself.sleep(1000)'
Кто-нибудь знает, почему os.linesep появляется, чтобы сообщить неправильную Eol символа на OSX?
Хорошо, это имеет смысл. Почему Qscintilla затем все еще возвращает текст с символом \ r в качестве символа новой строки? –
@ DanielS: Возможно, это ошибка в Qscintilla? –
@ DanielS: Ах, Сцинтилла довольно устарела; [документация, найденная мной] (http://www.scintilla.org/ScintillaDoc.html#LineEndings) действительно предполагает, что '\ r' используется независимо от версии Mac OS. Настройка 'SCI_SETEOLMODE' на' os.linesep', кажется, хорошая работа. –