Используя Python 2.7.9, я пытаюсь взять список каталогов в стиле DOS и разделить его на отдельные строки, используя встроенную функцию разделения строк. Список является каталогом, и одна из строк в моей тройной кавычки содержит конечную обратную косую черту. Проблема заключается в том, что линия заканчивается обратной косой черты не является раскол:Разделительные линии Python 2.7 не могут разбиваться на обратную косую черту назад
# DOS-style listing of the directory "B:\"
listing = """Directory of B:\
12/15/2014 02:12 PM 1814814 BIRD.LOG
01/01/2000 12:04 AM <DIR> CONFIG
12/15/2014 02:55 PM 35060 ALLIGATOR.LOG
03/15/2013 02:06 PM <DIR> MONKEY
03/15/2013 02:06 PM <DIR> FROG
03/15/2013 02:06 PM <DIR> BADGER
2 File(s) 1849874 bytes
4 Dir(s) 1674739712 bytes free
"""
# BIRD.LOG is combined with prior line ending in a backslash
print "keepends = False"
for line in listing.splitlines(False): print repr(line)
# Setting keepends=True does not help
print "keepends = True"
for line in listing.splitlines(True): print repr(line)
Вот результат:
keepends = False
'Directory of B: 12/15/2014 02:12 PM 1814814 BIRD.LOG'
' 01/01/2000 12:04 AM <DIR> CONFIG'
' 12/15/2014 02:55 PM 35060 ALLIGATOR.LOG'
' 03/15/2013 02:06 PM <DIR> MONKEY'
' 03/15/2013 02:06 PM <DIR> FROG'
' 03/15/2013 02:06 PM <DIR> BADGER'
' 2 File(s) 1849874 bytes'
' 4 Dir(s) 1674739712 bytes free'
keepends = True
'Directory of B: 12/15/2014 02:12 PM 1814814 BIRD.LOG\n'
' 01/01/2000 12:04 AM <DIR> CONFIG\n'
' 12/15/2014 02:55 PM 35060 ALLIGATOR.LOG\n'
' 03/15/2013 02:06 PM <DIR> MONKEY\n'
' 03/15/2013 02:06 PM <DIR> FROG\n'
' 03/15/2013 02:06 PM <DIR> BADGER\n'
' 2 File(s) 1849874 bytes\n'
' 4 Dir(s) 1674739712 bytes free\n'
проблема неизменна прохождения keepends = True
. В Python splitlines documentation не упоминается какая-либо специальная обратная косая черта, и ни одна из документации для universal newlines approach не разделяет линии разделения.
Мой образец кода - это единичный тест, но в реальном мире листинг будет программно получен. Я могу думать об обходных решениях, связанных с манипулированием моим входным списком или другими методами, но мне интересно, почему обходной путь должен быть необходим вообще. Это ошибка? Любые советы, безусловно, будут оценены!
Моя проблема заключалась в том, что я соединял необработанные строки с тройными цитируемыми строками. Назначение необработанных строк состоит в том, чтобы упростить ввод символов обратной косой черты, в то время как цель тройного цитирования состоит в том, чтобы упростить ввод кавычек и строк новой строки. Они являются отдельными функциями, и в ответе оба используются. –